没有符号链接的密码


54

如果我发现pwd它使用了我用来进入当前目录的任何符号链接。是否可以告诉我我所在的“真实”目录,即从根到当前目录的路径,而无需使用任何符号链接?

Answers:


70

根据的POSIX联机帮助页pwd,该-P选项可能有用:

-P写入的绝对路径名不得包含在路径名上下文中引用符号链接类型文件的文件名。

从而

$ pwd -P

应该是您所需要的。


我想指出的是,可以通过man pwd在shell中键入此命令的选项来轻松找到此信息。
Chud37 '18

7

内建的pwd shell使用了shell跟踪您的路径cd(并将其存储在中$PWD)。这意味着,如果您具有到复杂(深)路径的符号链接,它将告诉您键入的内容以更改为该目录,而不是实际路径。这样做是为了给您大部分时间想要的东西。

/bin/pwd使用getcwd系统调用(现在是一个库调用,正在读取/proc/self/cwd),该系统调用返回当前目录的规范路径,没有所有符号链接遍历。

正如Steven D所指出的,pwd可以-P选择忽略$PWD。它还具有-L返回的内容的选项$PWD。的手册页pwd没有说默认使用哪个选项,但是经验告诉我上面的描述是正确的(shell pwdvs. /bin/pwd)。但是,您可能不应该依赖于此,而只需使用即可pwd -P


2
您所描述的行为是在Linux系统上的一个地方/bin/pwd是GNU pwd时未设置POSIXLY_CORRECT。在POSIX系统,其中pwd/bin/bin/pwd将使用$ PWD并可能返回带有符号链接的路径。当GNU pwd在其环境中找到POSIXLY_CORRECT变量时,它将以POSIX方式运行。
斯特凡Chazelas
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.