BLOGTIMES
::
Home > shスクリプト内で安全に相対パスを使う
2009/10/13
[ by hsur at 12:34]

shスクリプト内で安全に相対パスを使う

  

シェルスクリプトでバッチを書いたものの、いざcronに仕掛けたらうまく動かないというパターンはバッチを作った人であれば一度は経験があると思います。基本的には環境変数がセットされていなくて、PATHが通ってなかったというパターンなんかが多いと思いますが、その次に多いのが、スクリプトの内部で相対パスを使っているために、自分でも予期しないうちにカレントディレクトリに依存したスクリプトになってしまっていたというのがあります。いちいち外部のプログラムを絶対PATHで書いていってもいいのですが、それも結構鬱陶しいので、僕はスクリプトの行頭に下記のような2行を追加するようにしています。

scriptdir.sh

#!/bin/bash
SCRIPT_DIR=`dirname $0`
cd $SCRIPT_DIR

# これ以下に処理を書く
pwd

こうするとカレントディレクトリが何処であっても、スクリプトの置いてあるディレクトリをカレントディレクトリとしてスクリプトを実行できるようになります。ちょっとしたスクリプトにも必ず書いておくようにすると、他人にスクリプトを実行してもらうときも、「###にcdしてから・・・」という説明を省く事ができるので意外と便利です。

$ pwd
/tmp/test
$ ./scriptdir.sh
/tmp/test
$ cd ..
$ pwd
/tmp
$ ./test/scriptdir.sh
$ cd ~
$ pwd
/home/hsur
$ /tmp/test/scriptdir.sh
/tmp/test
このエントリは役に立ちましたか?
トラックバックについて
Trackback URL:
お気軽にどうぞ。トラックバック前にポリシーをお読みください。[policy]
このエントリへのTrackbackにはこのURLが必要です→http://blog.cles.jp/item/3249
Trackbacks
このエントリにトラックバックはありません
Comments
愛のあるツッコミをお気軽にどうぞ。[policy]
古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
コメントはありません
Comments Form

コメントは承認後の表示となります。
OpenIDでログインすると、即時に公開されます。

OpenID を使ってログインすることができます。

Identity URL: Yahoo! JAPAN IDでログイン

Web Services by Yahoo! JAPANPowered by NP_SpamBayesJP
★下記に2つの英単語をスペースで区切って入力してください
::
Home > shスクリプト内で安全に相対パスを使う