我正在尝试了解在我的Mac上自定义终端。我一直在玩改变PS1变量,我发现\ $似乎不像其他转义符一样工作。例如,下面是我终端的一个片段。
$PS1="\w\$"
~$echo $PS1
\w$
我的问题是,当我输入echo $PS1
时,为什么会显示\w$
而不显示\w\$
?并且如上所述设置PS1,如果我以超级用户身份运行终端,我会看到$或#?
答案 0 :(得分:2)
在bash中,这是OSX上的默认终端shell,双引号字符串支持一些特殊字符,例如\
和$
。在表达式"\w\$"
中,\$
被解释为字符$
的转义字面值。
如果您希望$PS1
包含字符串\w\$
,请使用单引号:
PS1='\w\$'
或者,使用双引号,使用\\
代替反斜杠,使用\$
代表美元符号:
PS1="\\w\\\$"
当$PS1
设置为\w$
时,提示将始终以$
结束,即使是root。当$PS1
设置为\w\$
时,如果有效uid为0,则提示将以#
结束,否则为$
。