gpt4 book ai didi

bash - $PWD 与 pwd 关于便携性

转载 作者:行者123 更新时间:2023-11-29 08:46:57 25 4
gpt4 key购买 nike

我正在编写一个 shell 脚本来解析当前工作目录的路径(打印当前目录上方的所有基本名称)。

到目前为止,我一直在使用环境变量PWD 来解析路径,但我想知道是否

  • 我可以指望 PWD 始终设置
  • 在每个平台上给出相同的结果

使用 pwd shell-builtin 会更好吗?我需要这个脚本在尽可能多的平台上运行,所以我只是想知道...

最佳答案

POSIX需要按以下方式设置 $PWD:

PWD  

This variable shall represent an absolute pathname of the current working directory. It shall not contain any components that are dot or dot-dot. The value is set by the cd utility, and by the sh utility during initialization.

因此您可以依赖于已设置的内容 - 但请注意“...绝对路径...”,而不是绝对路径。

bash(至少最近的版本)会记住您在设置 $PWD(和 pwd 内置)时遵循的符号链接(symbolic link)。 command pwd(即外部命令)不会。所以你会在那里得到不同的结果,这对你来说可能重要,也可能不重要。如果您想要没有符号链接(symbolic link)的路径,请使用 pwd -P

请注意 pwd文档状态:

If an application sets or unsets the value of PWD, the behavior of pwd is unspecified.

所以,不要那样做:)

简而言之,这里没有赢家。环境变量将存在于 POSIX shell 中,外部命令也可能存在,也可能是内置命令。选择最适合您需要的那个,重要的是您是否关心符号链接(symbolic link)。

关于bash - $PWD 与 pwd 关于便携性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10795014/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com