我使用的是CentOS 6.4。默认情况下,root用户的提示符带有#
符号,即看起来像[root@myserver ~]#
。
echo $PS1
打印出来[\u@\h \W]\$
; 但是,如果这样做PS1="[\u@\h \W]\$"
(不更改任何东西,afaics),我最终会看到类似以下的提示:[root@myserver ~]$
。
为什么当我尝试自己进行设置(我最终希望将其更改为更有用的功能)时,它会按$
字面意义进行解释吗?我几乎可以找到每个页面(例如,“如何:更改/设置bash自定义提示(PS1)”),该提示\$
应#
为root用户得到a。
在您的问题中,您暗示您根本就没有引号。这显然是错误的,因为这样空格会将参数分配“ PS1 = [\ u @ \ h”与命令“ \ W] \ $”分开。请意识到每个角色都很重要。
无论如何,您可能正在做的是使用双引号(“)而不是单引号(')。在解释您输入内容的shell解释上,它们的行为非常不同。使用双引号,它将尝试使用对于此分配,由于\ u,\ h和\ W没什么特别的,所以它们保持不变;方括号在不同的地方可能有特殊的含义,但在这种情况下不是这样,因此它们也留在原处;但是由于a$
具有多种含义,它们都具有特殊含义,因此该\$
序列被解释为“忽略美元符号的特殊性,而仅留在其中”,然后将该序列替换为没有进一步解析的单个美元符号,所有结果都分配给PS1
,并且由于存在一个字面的美元符号,而不是\$
外壳程序构建实际提示时的魔术序列,因此您只会获得美元符号,而不是依赖于有效用户的字符。实际的解析要复杂一些,但这就是这个特定示例的要旨。
您输入的内容:PS1="[\u@\h \W]\$ "
外壳分配的内容:PS1 <- "[\u@\h \W]$ "
您想要的内容:PS1 <- "[\u@\h \W]\$ "
您应该输入的内容:PS1='[\u@\h \W]\$ '
下一步:阅读类似本教程的内容,以了解有关Shell引用的更多信息。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句