当我设置我的PS1 ='$ PWD'时,命令行显示当前目录的路径:
/home/myname
当我更改目录时它会发生变化。
但是当我将其更改为“$ PWD”(双引号)时,无论我现在在哪里,它总是会显示/ home / myname。从我读过的文章中可以看出,单引号会打印出它所在的内容并且不会扩展像$这样的特殊符号。那么为什么它会那样工作呢?
答案 0 :(得分:1)
“$ PWD”立即解决。因此,您实际上是将PS1设置为固定值(设置时的PWD值)。当您设置为'$ PWD'时,它不会立即解析,因此在使用时会解析,并在您更改目录时更改。因此双引号按预期扩展(到固定字符串),而单引号则不是。
答案 1 :(得分:0)
PS1
是一个特殊变量。从ksh手册页:
PS1 The value of this variable is expanded for parameter expansion,
command substitution, and arithmetic substitution to define the
primary prompt string which by default is ``$''. [...]
因此,在显示提示之前,PS1的值会得到特殊处理。使用单引号时,PS1的值仅为字符串 $ P W D 但是当需要提示时,ksh会进一步扩展变量以便提示 你当前的目录。