コマンドの正規パスを取得します。

コマンドの正規パスを取得します。

特定のコマンドへのフルパスを必要とするスクリプトを作成しています。実際のコマンドへのシンボリックリンクがある可能性があるため、readlink -f標準パスを取得しようとしました。しかし、私は本当に欲しいものを手に入れていませんreadlink -f。次の例を挙げて説明します。

/home/user/Documents 現在のディレクトリが次のと仮定します。パスを取得しようとすると、次の結果が表示されます。sleepreadlink -f

/home/user/Documents/sleep

私が本当に欲しいもの/bin/sleep

答え1

readlink -f "$(type -P sleep)"

またはパフォーマンス指向の場合:

cpath="$(type -P sleep)"; [ ! -L "$cpath" ] || cpath="$(readlink -f "$cpath")"

代わりに(既存)を使用すると、存在しないファイルを操作するときに事故をreadlink -e避けることができます。readlink -f

2番目の例では、返されたパスがtype -P正規パスであるとします。つまり、パスに非正規コンポーネントがないとします。

関連情報