シェルスクリプトで自分自身の情報を得る

実行中のスクリプト内で自分自身のファイル名やスクリプトのパスを知りたいときがあります。

#!/bin/sh

echo $0
echo `basename $0`
echo `dirname $0`

実行結果は以下の通りです。

[user@linux work]$ ~/work/test.sh
/home/user/work/test.sh
test.sh
/home/user/work
[user@linux work]$

外部設定ファイルを読み込むようなときは、そのファイルのありかをdirname $0で取得したスクリプトのあるディレクトリからの相対パスにしておくと(階層の関係性さえ維持すれば)どこに置いても動くので、そのようにする事が多いです。