/usr/bin
にシェルスクリプトがあります 。それをhello
と呼びましょう 。
これが含まれています:
echo "I am located in $PWD"
echo "I am called from this directory: ???"
hello
を実行しています /home/Documents
から 次の出力を期待しています:
I am located in /usr/bin
I am called from this directory: /home/Documents
スクリプトが実行されるディレクトリパスを取得するにはどうすればよいですか?
承認された回答:
別の回答にコメントできないので、ここに投稿します。前述のように、dirname
$0
を読み取るだけです ディレクトリ名を取得するので、../../directory/something.sh
のような名前を付けた場合 これらのドットは解決されませんが、../../directory
が返されます。 。 cd
でサブシェル拡張を使用する代わりに およびpwd
、非常にスマートなコマンドreadlink
を使用できます これは、点線のディレクトリだけでなく、すべてのシンボリックリンクも実際に解決します。したがって、私は提案します
echo "I am located at $(readlink -e -- "$0")"
別のdirname
を使用できます このあたりで、ファイルの代わりにディレクトリを取得します。