相対パスを移植可能で確実に絶対パスに変換するにはどうすればよいですか?

相対パスを移植可能で確実に絶対パスに変換するにはどうすればよいですか?

私はUnix系のシステムでbashを実行しているとしましょう。 Linuxである必要もなく、まったく新しいシステムである必要もなく、必要なソフトウェアがすべて含まれていない場合があります。

今、相対パスがあり、絶対パスを取得したいと思います。最も強力で移植可能な方法は何ですか?

回答ここほとんどの場合、GNUコアユーティリティがインストールされていると仮定しているようですが、私はそうしない方が良いです。

あなたの答えがBourne Shellのバリエーションに適用される場合、ボーナスポイントが与えられます。

答え1

$PWDBourne 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コアの一部でした。

関連情報