シェルで今いるディレクトリを調べる

なぜ

シェルスクリプトを叩く場合、カレントディレクトリは「ファイルがおいてある場所」ではなくて「実行ユーザが居る場所」なんだよね ?

具体的に、

/home/foo にいるときに /var/hoge/fuga.sh を実行してファイルを書き出したりすると /home/foo にファイルが作られてしまう。

同じように、シェルから /var/hoge/hoge.log にアクセスしようとした場合、相対パスだと /home/foo/hoge.log を探しに行ったりしちゃって使いづらい。

なので、シェルスクリプトの先頭で cd /var/hoge/ とかしていました。

そう、昨日までは。

置かれた場所を調べなさい

絶対パスを埋め込んでしまうと、ファイルを移動したときにパスを修正しなければなりません。
これは面倒です。

解決方法は「シェルが置かれている場所を調べる」です。

DIR=`dirname ${0}`
cd $DIR

シェルに上記を追記するだけで、cd してくれてどこにでも置けるので、これで楽勝です。

参考

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

スポンサーリンク







シェアする

  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク