当我在终端中设置 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,提示将以#
结束,否则$
.
我正在尝试了解如何在 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,提示将以#
结束,否则$
.