すがブロ

sugamasaoのhatenablogだよ

実行しているシェルのディレクトリを求める

実行したシェルスクリプトのおいてあるディレクトリを取得する

実行したシェルスクリプトと同じディレクトリの下に、テンポラリのファイルを置いたりディレクトリを置いたりしたくなる事があると思うのだけど、そういったときにはそのシェルスクリプトを実行した時のカレントディレクトリに注意しなくてはいけない。

#!/bin/sh

touch "./hoge"

こんな風なシェルスクリプト(仮に hogehoge.sh とする)にすると、/tmp に居る状態で~/hogehoge.sh を実行すると /tmp 配下に hoge ファイルが作られてしまう。

どうするかというと

シェルスクリプトのディレクトリを取得して、そのディレクトリをベースとしてやれば良い。
その為に、 dirname コマンドを使う。

#!/bin/sh

touch `dirname ${0}`/hoge

このようにするとシェルスクリプトがあるディレクトリをベースとして作業する事が可能になる。
例えば、

DIR=`dirname ${0}`

のようにしてベースディレクトリとして変数に格納しておくと良いね。