LoginSignup
46
37

More than 5 years have passed since last update.

そのシェルスクリプトのあるディレクトリに移動する

Last updated at Posted at 2013-06-28

追記 3

つい 3 日ほど前にまるで同じ内容のエントリが同じく Qiita 内にあったそうです.

bash/zshでsourceされたスクリプト内で、ファイル自身の絶対パスをとるシンプルな記法 - Qiita [キータ]

さらにこのエントリでも触れられているように,bash で source を使ってこのエントリの内容を実行すると正常に動作しないことを確認しました.

ということで一応本文は残しておきますが,内容的にも今紹介したエントリを読んだ方が良いかと思われます.

本文

a.sh
#! /bin/bash

cd `dirname $0`

find $PWD -name a.sh #=> found always!

どこから実行しても a.sh があるディレクトリに移動します.

多分.

「こういう場合に動かないよ!」とかありましたらご指摘お願いします.

一応最初にこんなのも思い付いた (その後 dirname コマンドの存在を知った) のでメモがてら.

a.sh
#! /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 [キータ]

References

46
37
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
46
37