环境变量PWD总是在Linux中定义的吗?
问题:环境变量PWD是否总是在Linux下独立于命令shell定义(忽略非命令shell)?换句话说,像“ls$PWD”这样的命令会一直运行吗 环境变量环境变量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定义
不,我不明白为什么会出现这种情况,因为PWD
变量是在使用cd
命令后自动更新的(在shell初始化时和之后),这正是shell内置的
有关PWD
的相关文档可在以下位置找到:
- 这个,
- 这个,
- 或者
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)
@Tanktaluspwd-P
中一样,对于ls$(pwd)
,如果当前目录包含空格或其他特殊字符,则除非执行ls“$(pwd)”
@Tanktalus,ls“$(pwd)”
的执行速度比ls“$pwd”慢得多
——前者需要一个子shell(因此,在bash中创建一个管道对和一个fork()
),只需获得子流程中运行的pwd
副本的输出;在后者中,唯一的子进程是ls
本身的副本。它也在shell初始化时设置,因此不需要首先发出cd
required@thatotherguy事实上,我已经编辑了我的答案来添加你的评论。是的,这就是我想要的答案。谢谢