Answers:
内建的pwd shell使用了shell跟踪您的路径cd
(并将其存储在中$PWD
)。这意味着,如果您具有到复杂(深)路径的符号链接,它将告诉您键入的内容以更改为该目录,而不是实际路径。这样做是为了给您大部分时间想要的东西。
/bin/pwd
使用getcwd
系统调用(现在是一个库调用,正在读取/proc/self/cwd
),该系统调用返回当前目录的规范路径,没有所有符号链接遍历。
正如Steven D所指出的,pwd
可以-P
选择忽略$PWD
。它还具有-L
返回的内容的选项$PWD
。的手册页pwd
没有说默认使用哪个选项,但是经验告诉我上面的描述是正确的(shell pwd
vs. /bin/pwd
)。但是,您可能不应该依赖于此,而只需使用即可pwd -P
。
/bin/pwd
是GNU pwd
时未设置POSIXLY_CORRECT。在POSIX系统,其中pwd
在/bin
。/bin/pwd
将使用$ PWD并可能返回带有符号链接的路径。当GNU pwd在其环境中找到POSIXLY_CORRECT变量时,它将以POSIX方式运行。
man pwd
在shell中键入此命令的选项来轻松找到此信息。