dirname(__FILE__);
と書くことで取得できますが、シェルの場合はどうやって取得するのかわからなかったので調べてみた。
で、取得方法としては以下の通り。
$ vi test.sh
BASE_DIR=`dirname $0`
echo $BASE_DIR
で実行されているシェルのディレクトリを取得することができる。
しかし、これをこのままechoするとなんだか残念な気分にならざるを得ない。
実行すると以下のようなレスポンスが返ってくる
$ ./test.sh
.
なんて残念な…。
「.」だけです。
相対パスで返ってくる。
もうちょっと調べてみると、こういう取り方をすればいいのかという記事がありました。
その方法は、
$ vi test.sh
BASEDIR=`cd \`dirname $0\`; pwd`
echo $BASE_DIR
ものすごく納得しました。
確かにこの方法であれば、シェルが実行されているディレクトリを絶対パスで指定することができます。
これで環境が変わっても、ディレクトリ構成さえ一緒であれば、問題無く使えます。