当我在终端设置PS1时,$ $似乎不起作用

时间:2015-08-22 08:07:12

标签: macos terminal prompt

我正在尝试了解在我的Mac上自定义终端。我一直在玩改变PS1变量,我发现\ $似乎不像其他转义符一样工作。例如,下面是我终端的一个片段。

$PS1="\w\$"
~$echo $PS1
\w$

我的问题是,当我输入echo $PS1时,为什么会显示\w$而不显示\w\$?并且如上所述设置PS1,如果我以超级用户身份运行终端,我会看到$或#?

1 个答案:

答案 0 :(得分:2)

在bash中,这是OSX上的默认终端shell,双引号字符串支持一些特殊字符,例如\$。在表达式"\w\$"中,\$被解释为字符$的转义字面值。

如果您希望$PS1包含字符串\w\$,请使用单引号:

PS1='\w\$'

或者,使用双引号,使用\\代替反斜杠,使用\$代表美元符号:

PS1="\\w\\\$"

$PS1设置为\w$时,提示将始终以$结束,即使是root。当$PS1设置为\w\$时,如果有效uid为0,则提示将以#结束,否则为$