单/双引号ksh

时间:2013-06-03 17:52:54

标签: unix ksh

当我设置我的PS1 ='$ PWD'时,命令行显示当前目录的路径: /home/myname当我更改目录时它会发生变化。

但是当我将其更改为“$ PWD”(双引号)时,无论我现在在哪里,它总是会显示/ home / myname。从我读过的文章中可以看出,单引号会打印出它所在的内容并且不会扩展像$这样的特殊符号。那么为什么它会那样工作呢?

2 个答案:

答案 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会进一步扩展变量以便提示  你当前的目录。