/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を使用できます このあたりで、ファイルの代わりにディレクトリを取得します。