シェルスクリプトなどで、「実行しているスクリプトが設置されているディレクトリ」のパスを取得したいというケースがあります。
そんなときは、次のようにすると欲しい情報が取得できます。
スクリプト
スクリプトの内容
BASH_SOURCE=sample.sh SCRIPTDIR=$(realpath $(dirname ${BASH_SOURCE:-$0})) echo $SCRIPTDIR
スクリプト実行
$ sh sample.sh /home/sato/work
コマンド説明
dirname コマンド
パスで指定された文字列をファイルもしくはディレクトリのパスとみなし、最後の部分を取り除くコマンド
realpath コマンド
相対パスを絶対パスに展開するコマンド