シェルスクリプトと同階層のファイルを扱う時

シェルスクリプトの中で、そのスクリプトと同階層のファイルを扱いたい場合、下記のような事をよくやると思う。

#!/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)