dirname $0
これを使って cd したり コマンドに渡す引数の指定でフォルダ名として使ったり
cd `dirname $0`
command `dirname $0`/filename
スクリプトを実行したときのカレントフォルダがどこでも動くようにできる
だけどこれをそのまま使うと動かなかった
dirname というのは引数のパスのファイルやフォルダを含む親フォルダ名を取得するもの
$0 はコマンドライン引数
bash foo.sh
./foo.sh
みたいに実行すると $0 は 「foo.sh」 や 「./foo.sh」
これの dirname は 「.」
カレントフォルダを移動して戻ってくるのには使えない
変更先で 「.」 を使ってもその変更先を自身を表して元のフォルダにはならない
例えば
scriptdir=`dirname $0`
cd $scriptdir
command1
command2
...
cd /path/to/other/dir
command3
command4
...
cd $scriptdir
command5
みたいにしても最初と最後の cd で同じフォルダに移動しない
「.」 になってると cd での移動先が今いるフォルダだから何もしないのと一緒
最初に絶対パスに変換して保持する必要がある