RT ,通过 shell 脚本写成一个 sh 文件,里面只有一条命令: echo $PS1 ,然而执行后只显示一行空行。直接在命令行执行 echo $PS1 可以正常显示 PS1 变量。
1
privil Dec 11, 2016 via iPhone
脚本没获取系统变量
|
2
wangtuyi Dec 11, 2016
只有一条命令,只输出一行空行,因为$PS1 没有被赋值
在命令行 echo $PS1 却有结果,说明在 echo 之前$PS1 已经被赋值了 |
3
antispiral Dec 11, 2016
echo $$PS1
|
4
jr028740 OP @antispiral 额.......显示的不是 PS1 环境变量的值啊..........而且$$本身就是一个变量。
|
6
tatsuteng Dec 11, 2016
非交互模式的 shell 会自动 unset PS1 变量,你需要迂回求解:
``` echo "echo \$PS1 && exit 0" | bash -i 2> /dev/null ``` |
9
wangtuyi Dec 11, 2016
@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 |