3

基于 Debian 的系统的默认.bashrc文件设置$PS1如下:

PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '

让我困惑的是那${debian_chroot}部分。根据StackOverflow:bash 中单引号和双引号之间的区别,如果在定义字符串时使用单引号,$则应将诸如字符之类的字符视为文字,而不是评估变量。

这是否意味着 Bash实际上应该打印出来${debian_chroot:...,而不是那个变量的值?还是这里涉及到更多的语法规则?

4

2 回答 2

5

你通常是对的,除了PS1在运行时再次扩展的值作为生成提示的一部分。这专门允许在运行时进行扩展。

PS1='$PWD: '$PWD在显示提示时展开,以便您始终看到当前目录。

PS1="$PWD: "$PWD在定义提示时展开,以便您始终看到定义提示时所在的目录。

于 2014-05-27T00:12:09.953 回答
0

PROMPT_COMMAND使用它来设置PS1每次使用的值通常更简单。这样,您不必自行转义代码PS1

make_prompt () {
    PS1="${debian_chroot:+($debian_chroot)}\u@\h:\w\$ "
}

PROMPT_COMMAND='make_prompt'
于 2014-05-27T11:48:06.237 回答