假设我在 Unix-ish 系统上运行 bash - 不一定是 Linux,也不一定是非常新的;而且它可能没有我想要的所有软件。
现在,我有一个相对路径,我想获取其绝对路径。最强大、最便携的方法是什么?
答案这里似乎主要假设 GNU 核心实用程序已安装,但我宁愿不这样做。
如果您的答案适用于任何 Bourne Shell 变体,则可获得奖励积分。
答案1
我不确定环境变量是否$PWD
在 bourne shell 中设置,但是命令pwd
自旧的 minix 以来就存在并且是POSIX 的一部分, 所以:
abs_path="$(cd "$rel_path" && pwd -P)"
答案2
我现在做的是
absolute_path="$(cd "$relative_path"; echo "$PWD")"
我想知道 Bourne Shell 是否有$PWD
。
答案3
您可以使用Cwd
Perl 的核心模块。该模块提供了确定当前工作目录的路径名的函数。
perl -MCwd -le 'print Cwd::realpath("foo")'
Perl 通常已经安装在 Linux 和 Unix 上。自 1994 年以来,该模块一直是 Perl-5 核心的一部分。