问题:在Linux下,是否总是在独立于命令外壳程序(忽略非命令外壳程序)的情况下定义环境变量PWD?换句话说,是否会始终运行“ ls $ PWD”之类的命令?
答案 0 :(得分:2)
符合Posix的外壳将设置此环境变量。在http://pubs.opengroup.org/onlinepubs/009604599/utilities/cd.html
中查找PWDPWD 该变量应按照说明书中的规定进行设置。如果应用程序设置或未设置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会话,以示例PWD
和cd
之间的链接:
/$ 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"
编写,以避免在变量包含空格或其他特殊字符的情况下出现麻烦。