Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
环境变量PWD总是在Linux中定义的吗?_Linux_Shell_Environment Variables - Fatal编程技术网

环境变量PWD总是在Linux中定义的吗?

环境变量PWD总是在Linux中定义的吗?,linux,shell,environment-variables,Linux,Shell,Environment Variables,问题:环境变量PWD是否总是在Linux下独立于命令shell定义(忽略非命令shell)?换句话说,像“ls$PWD”这样的命令会一直运行吗 环境变量PWD是否总是在Linux下独立于命令shell定义 不,我不明白为什么会出现这种情况,因为PWD变量是在使用cd命令后自动更新的(在shell初始化时和之后),这正是shell内置的 有关PWD的相关文档可在以下位置找到: 这个, 这个, 或者 下面是一个Bash会话示例,演示了PWD和cd之间的链接: /$ echo "$SHELL" /

问题:环境变量PWD是否总是在Linux下独立于命令shell定义(忽略非命令shell)?换句话说,像“ls$PWD”这样的命令会一直运行吗

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

不,我不明白为什么会出现这种情况,因为
PWD
变量是在使用
cd
命令后自动更新的(在shell初始化时和之后),这正是shell内置的

有关
PWD
的相关文档可在以下位置找到:

  • 这个,
  • 这个,
  • 或者
下面是一个Bash会话示例,演示了
PWD
cd
之间的链接:

/$ echo "$SHELL"
/bin/bash
/$ echo "$PWD"
/
/$ cd usr/bin/
/usr/bin$ echo "$PWD"
/usr/bin
换句话说,像
ls$PWD
这样的命令会一直运行吗

实际上,
$PWD
语法对应于a,因此如果没有shell,
ls$PWD
就无法正确计算


顺便说一句:强烈建议对shell变量进行双引号引用,在这种情况下,这样写
ls“$PWD”
,以避免变量包含空格或其他特殊字符时出现问题。

符合Posix的shell将设置此环境变量。在中查找PWD

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

或中的第2.5.3节“外壳变量”

变量应从环境中初始化。。。如果一个变量 从环境初始化时,应标记为导出 立刻

PWD 由shell设置为当前工作目录的绝对路径名


我不知道有任何标准的环境变量叫做“PMD”。你是说“PWD”吗?是的,对不起,我是说PWD。我已经纠正了这一点。ThanksI宁愿依赖于
pwd
pwd-P
命令的输出。正如在
ls$(pwd)
@Tanktalus
pwd-P
中一样,对于
ls$(pwd)
,如果当前目录包含空格或其他特殊字符,则除非执行
ls“$(pwd)”
@Tanktalus,
ls“$(pwd)”
的执行速度比
ls“$pwd”慢得多
——前者需要一个子shell(因此,在bash中创建一个管道对和一个
fork()
),只需获得子流程中运行的
pwd
副本的输出;在后者中,唯一的子进程是
ls
本身的副本。它也在shell初始化时设置,因此不需要首先发出
cd
required@thatotherguy事实上,我已经编辑了我的答案来添加你的评论。是的,这就是我想要的答案。谢谢