シェルスクリプトで、スクリプトファイルが置かれたディレクトリのパスを取得する方法
シェルスクリプトの中で、何かしらの設定値をファイルに保存したいと思った。そのときに、スクリプト自身の横に設定ファイルを置きたいなと思い、そのファイルのパスを取得する必要が出たので調べた。
シェルスクリプトでは、$0
で起動時のコマンドが得られる。たいていの場合、シェルスクリプト自身への相対パスが入るだろうから、これで相対パスを得られる。
これを絶対パスにするには、readlink
を使えば良い。
readlink -f $0
これでファイル自身への絶対パスが得られた。このファイルが置かれているディレクトリ名を取得するには、dirname
を使う
dirname $(readlink -f $0)
これで、スクリプトファイルの置かれたフォルダの絶対パスが得られる。
SCRIPT_DIR=$(dirname $(readlink -f $0))
実際には、上のように変数に入れて使い回すことが多いだろう。