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

\$ doesn't seem to be working when I set PS1 in terminal

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

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

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

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

的转义文字

如果要$PS1包含字符串\w$,使用单引号:

PS1='\w$'

或者,使用双引号,使用 \ 作为反斜杠,使用 $ 作为美元符号:

PS1="\w\$"

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