スクリプトの配置ディレクトリによらず、スクリプトの実行ディレクトリを起点にしてコマンドを実行する場合の記述まとめ
スクリプトを一か所にまとめて置き、複数の場所で使用した場合、いちいち作業ディレクトリにコピーするのが面倒なので以下の特性を知っておくと便利
<関連する記事>
配置場所に依存したスクリプト記述方法▼
現在の作業ディレクトリの取得方法
ディレクトリ構成:
script_test
├── hoge // 実行ディレクトリ1
└── script // 実行ディレクトリ2
└── script.sh
bash記述例
script.sh:#!/bin/bash
echo "スクリプト'配置'ディレクトリ"
echo "$(dirname "$0")"
echo "スクリプト'実行'ディレクトリ"
echo "$(pwd)"
csh/tcsh記述例
script.sh:# !/bin/csh
echo "スクリプト'配置'ディレクトリ"
echo `dirname $0`
echo "スクリプト'実行'ディレクトリ"
echo `pwd`
実行結果
実行(scriptディレクトリ):スクリプト'配置'ディレクトリ
.
スクリプト'実行'ディレクトリ
/{dir_path}/script_test/script
スクリプト'配置'ディレクトリ
../script
スクリプト'実行'ディレクトリ
/{dir_path}/script_test/hoge
スクリプトの特性
特別な処理を記述していなければ、シェルスクリプトはユーザーの現在の作業ディレクトリを起点として、スクリプト内のコマンドを実行するため、mkdirやtouchのコマンドを書いたスクリプトを実行すると、その場に実行結果が反映される。
以下のシェルスクリプトをどこかにおいて、作業ディレクトリを変えて実行すると、作業ディレクトリが現在地として認識されていることが分かる。
script.sh:
#!/bin/bash
pwd
script_test
├── hoge // 実行場所1
│ └── script.sh
└── script // 実行場所2
実行結果(Dir : hoge):
/{Dir_Path}/script_test/hoge
/{Dir_Path}/script_test/script
以上