スクリプト名を取得する(シェルスクリプト)

デバッグ等の目的でスクリプト名を取得して出力したい状況はしばしば発生する。 シェルスクリプトでは$0を参照することでスクリプト名を取得することができる。


例えば以下のようなスクリプトを作成する。

$ cat testscript.sh 
#!/bin/sh
echo $0

このスクリプトを実行すると呼び出し名が出力される。

$ ./testscript.sh 
./testscript.sh

絶対パスによりスクリプトを指定して実行してみる。

$ /path/to/testscript.sh 
/path/to/testscript.sh


スクリプトのベース名だけを取得したい場合はbasenameを利用すれば良い。もしくはパラメータ展開によってもこれを実現できる。パラメータ展開はシェル自身が解釈するため高速である。個人的にはパラメータ展開の方法を多用している。

$ cat testscript.sh 
#!/bin/sh
echo $(basename $0)
echo ${0##*/}

実行結果は以下の通り。

$ ./testscript.sh 
testscript.sh
testscript.sh
$ /path/to/testscript.sh 
testscript.sh
testscript.sh