1
privil 2016-12-11 19:06:07 +08:00 via iPhone
脚本没获取系统变量
|
2
wangtuyi 2016-12-11 19:07:10 +08:00
只有一条命令,只输出一行空行,因为$PS1 没有被赋值
在命令行 echo $PS1 却有结果,说明在 echo 之前$PS1 已经被赋值了 |
3
antispiral 2016-12-11 19:09:38 +08:00
echo $$PS1
|
4
jr028740 OP @antispiral 额.......显示的不是 PS1 环境变量的值啊..........而且$$本身就是一个变量。
|
6
tatsuteng 2016-12-11 19:35:30 +08:00
非交互模式的 shell 会自动 unset PS1 变量,你需要迂回求解:
``` echo "echo \$PS1 && exit 0" | bash -i 2> /dev/null ``` |
9
wangtuyi 2016-12-11 21:31:30 +08:00
@jr028740
你按照 @tatsuteng 的命令,实际上 bash 会有一个 bashrc $ cat /etc/bashrc # System-wide .bashrc file for interactive bash(1) shells. if [ -z "$PS1" ]; then return fi PS1='\h:\W \u\$ ' # Make bash check its window size after a process completes shopt -s checkwinsize [ -r "/etc/bashrc_$TERM_PROGRAM" ] && . "/etc/bashrc_$TERM_PROGRAM" 按照我的,你输出空行因为 /etc/zshrc 的默认并没有设定$PS1 ,在我的机器上是 $ cat /etc/zshrc # Correctly display UTF-8 with combining characters. if [ "$TERM_PROGRAM" = "Apple_Terminal" ]; then setopt combiningchars fi disable log 我自己是 source 了我自定义的~/.zshrc ,所以能拿到我的$PS1 |