没有符号链接的密码

Joe*_*Fan 66 symlink

如果我这样做,pwd我会注意到它使用了我用来进入当前目录的任何符号链接。我可以让它告诉我我所在的“真实”目录......即从根目录到当前目录的路径而不使用任何符号链接吗?

Ste*_*n D 82

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

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

因此

$ pwd -P
Run Code Online (Sandbox Code Playgroud)

应该是你需要的。


cam*_*amh 8

内置的 pwd shell 使用 shell 跟踪您cd(并将其存储在 中$PWD)的路径。这意味着如果你有一个指向复杂(深层)路径的符号链接,它会告诉你你输入了什么来更改到该目录而不是真实路径。这样做是为了在大多数情况下为您提供您想要的东西。

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

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

  • 您描述的行为是 Linux 系统上的行为,其中当 POSIXLY_CORRECT 未设置时,`/bin/pwd` 是 GNU `pwd`。在 `pwd` 位于 `/bin` 的 POSIX 系统上。`/bin/pwd` 将使用 $PWD 并可能返回带有符号链接的路径。当 GNU pwd 在其环境中找到 POSIXLY_CORRECT 变量时,它会以这种 POSIX 方式运行。 (3认同)