less than 1 minute read

シェルスクリプトの中で、何かしらの設定値をファイルに保存したいと思った。そのときに、スクリプト自身の横に設定ファイルを置きたいなと思い、そのファイルのパスを取得する必要が出たので調べた。

シェルスクリプトでは、$0で起動時のコマンドが得られる。たいていの場合、シェルスクリプト自身への相対パスが入るだろうから、これで相対パスを得られる。

これを絶対パスにするには、readlinkを使えば良い。

readlink -f $0

これでファイル自身への絶対パスが得られた。このファイルが置かれているディレクトリ名を取得するには、dirnameを使う

dirname $(readlink -f $0)

これで、スクリプトファイルの置かれたフォルダの絶対パスが得られる。

SCRIPT_DIR=$(dirname $(readlink -f $0))

実際には、上のように変数に入れて使い回すことが多いだろう。