在Linux中是否始终定义环境变量PWD?

时间:2019-03-15 21:16:54

标签: linux shell environment-variables

问题:在Linux下,是否总是在独立于命令外壳程序(忽略非命令外壳程序)的情况下定义环境变量PWD?换句话说,是否会始终运行“ ls $ PWD”之类的命令?

2 个答案:

答案 0 :(得分:2)

符合Posix的外壳将设置此环境变量。在http://pubs.opengroup.org/onlinepubs/009604599/utilities/cd.html

中查找PWD
  

PWD       该变量应按照说明书中的规定进行设置。如果应用程序设置或未设置PWD的值,则cd的行为是   未指定。

http://pubs.opengroup.org/onlinepubs/009604599/utilities/xcu_chap02.html中的第2.5.3节“ Shell变量”

  

变量应从环境中初始化...如果是变量   是从环境初始化的,应标记为要导出   立即

     

PWD       由外壳程序设置为当前工作目录的绝对路径名,

答案 1 :(得分:1)

  

环境变量PWD是否始终在Linux下独立于命令shell定义?

否,我不知道为什么会这样,因为PWD变量是在使用cd命令后(在外壳初始化时)自动更新的,而这恰恰是<内置的strong>外壳。

例如,可以找到有关PWD的相关文档。在:

下面是一个示例Bash会话,以示例PWDcd之间的链接:

/$ echo "$SHELL"
/bin/bash
/$ echo "$PWD"
/
/$ cd usr/bin/
/usr/bin$ echo "$PWD"
/usr/bin
  

换句话说,像ls $PWD这样的命令将始终运行吗?

实际上,$PWD语法与shell parameter expansion相对应,因此ls $PWD在没有外壳的情况下无法正确评估。

顺便说一句:强烈建议对您的shell变量加双引号,在这种情况下,请用ls "$PWD"编写,以避免在变量包含空格或其他特殊字符的情况下出现麻烦。