シェルスクリプトと同階層のファイルを扱う時
シェルスクリプトの中で、そのスクリプトと同階層のファイルを扱いたい場合、下記のような事をよくやると思う。
#!/bin/sh
DIR_BASE=`dirname ${0}`
cat ${DIR_BASE}/file1
cat ${DIR_BASE}/file2
ただこのやり方だと、./script.sh
のように実行した場合、DIR_BASE
には .
が入ってしまう。
ひとたびスクリプトの中でディレクトリ移動してしまうと、同階層にもどってこれないので、DIR_BASE
は下記のように得た方が良い。
#!/bin/sh
DIR_BASE=$(cd $(dirname ${0}); pwd)