私はUnix系のシステムで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コアの一部でした。