如何可移植且可靠地将相对路径转换为绝对路径?

如何可移植且可靠地将相对路径转换为绝对路径?

假设我在 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

您可以使用CwdPerl 的核心模块。该模块提供了确定当前工作目录的路径名的函数。

perl -MCwd -le 'print Cwd::realpath("foo")'

Perl 通常已经安装在 Linux 和 Unix 上。自 1994 年以来,该模块一直是 Perl-5 核心的一部分。

相关内容