我正在编写一个 shell 脚本,它解析当前工作目录的路径(打印当前目录上方的所有基本名称)。
到目前为止,我一直在使用环境变量PWD
解析路径,但我想知道是否
- 我可以信赖
PWD
始终被设置
- 在每个平台上给出相同的结果
使用pwd
外壳内置?我需要这个脚本在尽可能多的平台上运行,所以我只是想知道......
POSIX http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap08.html#tag_08需要$PWD
按以下方式设置:
PWD
该变量应表示当前工作目录的绝对路径名。它不应包含任何点或点-点的组件。该值由 cd 实用程序和 sh 实用程序在初始化期间设置。
因此,您可以依赖所设置的内容 - 但请注意“...绝对路径...”,而不是the绝对路径。
bash
(至少最近的版本)会记住您在设置时遵循的符号链接$PWD
(以及pwd
内置)。command pwd
(即外部命令)不会。因此,您会在那里得到不同的结果,这对您来说可能很重要,也可能不重要。使用pwd -P
如果你想要一个没有符号链接的路径。
请注意pwd http://pubs.opengroup.org/onlinepubs/9699919799/utilities/pwd.html文档指出:
如果应用程序设置或取消设置 PWD 的值,则 pwd 的行为是未指定的。
所以,不要这样做:)
简而言之,这里没有赢家。环境变量将存在于 POSIX shell 中,外部命令也可能存在内置命令。选择最适合您需要的一个,重要的是您是否关心符号链接。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)