追記 3
つい 3 日ほど前にまるで同じ内容のエントリが同じく Qiita 内にあったそうです.
bash/zshでsourceされたスクリプト内で、ファイル自身の絶対パスをとるシンプルな記法 - Qiita [キータ]
さらにこのエントリでも触れられているように,bash で source
を使ってこのエントリの内容を実行すると正常に動作しないことを確認しました.
ということで一応本文は残しておきますが,内容的にも今紹介したエントリを読んだ方が良いかと思われます.
本文
#! /bin/bash
cd `dirname $0`
find $PWD -name a.sh #=> found always!
どこから実行しても a.sh
があるディレクトリに移動します.
多分.
「こういう場合に動かないよ!」とかありましたらご指摘お願いします.
一応最初にこんなのも思い付いた (その後 dirname
コマンドの存在を知った) のでメモがてら.
#! /bin/bash
THIS_FILE_PATH="$PWD/$0"
cd ${THIS_FILE_PATH%/*}
dirname
なんて便利コマンドがあるなら要らないと思います.dirname
ってとりあえず Mac と Ubuntu では使えたけど他でも問題無いよね?POSIX だよね?
用途
test
ディレクトリの中に移動してそこでテストスクリプト走らせたいしそもそもそこにテストスイートも置いてあるし…な状況で使えると思います.
シェルスクリプトのユニットテストは shUnit2 ってので出来るらしいですよ奥さん (情報提供 sue445 さん (コレ)).
追記
なんかこのまま
. ./shunit2
すると PWD
の乱れが発生してつらみがマッハなう… 何とかしてます… 何とかなったら新しいエントリ作るぽよ…
追記 2
このエントリ自体は特に問題ないと思う.ただ shUnit2 とこのエントリの内容を組み合わせようとするとちと面倒なことが起こったので次のエントリにそのことについて書きました.
ShellScript でもテストを書こう with shUnit2 - Qiita [キータ]