基于Debian的系统的默认.bashrc
文件设置$PS1
,如下所示:
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
让我感到困惑的是${debian_chroot}
部分。根据{{3}},如果在定义字符串时使用单引号,则应将$
等字符视为文字,而不是评估变量。
这是不是意味着Bash应实际打印出${debian_chroot:...
,而不是该变量的值?或者这里涉及更多语法规则?
答案 0 :(得分:5)
您通常是正确的,除了PS1
的值在运行时再次展开,作为生成提示的一部分。这特别是为了允许在运行时进行扩展。
PS1='$PWD: '
将展开$PWD
,以便您始终可以看到当前目录。
PS1="$PWD: "
将展开$PWD
,以便您在定义提示时始终可以看到您所在的目录。
答案 1 :(得分:0)
每次使用PROMPT_COMMAND
时,使用PS1
设置值通常更为简单。这样,您就不必在PS1
本身中转义代码。
make_prompt () {
PS1="${debian_chroot:+($debian_chroot)}\u@\h:\w\$ "
}
PROMPT_COMMAND='make_prompt'