Mad*_*ern 47 terminology environment-variables
所以维基百科(链接)告诉我该命令pwd
是“打印工作目录”的缩写,这是有道理的。
但是对于环境变量,“P”必须是打印以外的其他内容的首字母缩写词。
我听到人们谈论“当前工作目录”,这听起来更好,更直观,但环境变量似乎仍然被称为 $PWD,而不是 $CWD。从来没有人说“你检查了打印工作目录变量了吗?”。
我目前正在使用 web 应用程序服务器 uWSGI,运行时它告诉我(在 uWSGI 统计页面上):
"cwd":"/home/velle/greendrinks",
Run Code Online (Sandbox Code Playgroud)
所以他们显然喜欢(更直观的首字母缩写词)cwd
over pwd
。
我想我想弄清楚是我误解了什么,还是只是给环境变量一个不直观的名字?
Thu*_*shi 38
这取决于你在做什么。首先,$PWD
是一个环境变量,pwd
是一个内置的 shell 或一个实际的二进制文件:
$ type -a pwd
pwd is a shell builtin
pwd is /bin/pwd
Run Code Online (Sandbox Code Playgroud)
现在,$PWD
除非您使用-P
标志,否则bash 内置将简单地打印当前值。如中所述help pwd
:
pwd: pwd [-LP]
打印当前工作目录的名称。
选项:
-L
打印
$PWD
它是否命名当前工作目录的值-P
打印物理目录,没有任何符号链接
默认情况下,'pwd' 的行为就像指定了 '-L' 一样。
该pwd
二进制,而另一方面,通过获取当前目录下getcwd(3)
的系统调用,它返回相同的值readlink -f /proc/self/cwd
。为了说明这一点,请尝试进入一个链接到另一个目录的目录:
$ ls -l
total 4
drwxr-xr-x 2 terdon terdon 4096 Jun 4 11:22 foo
lrwxrwxrwx 1 terdon terdon 4 Jun 4 11:22 linktofoo -> foo/
$ cd linktofoo
$ echo $PWD
/home/terdon/foo/linktofoo
$ pwd
/home/terdon/foo/linktofoo
$ /bin/pwd
/home/terdon/foo/foo
Run Code Online (Sandbox Code Playgroud)
所以,综上所述,在GNU系统(如Ubuntu),pwd
并且echo $PWD
是等价的,除非你使用的-P
选项,但是/bin/pwd
是不同的,并且表现得像pwd -P
。
来源 https://askubuntu.com/a/476633/291937
jcb*_*rmu 22
$PWD
是P的当前的athname W¯¯工作会有d irectory
当有符号链接时,从读取$PWD
到执行命令可能会产生不同的结果pwd
。