スクリプトの配置場所を意識しないですむので、シェルスクリプトの中から他のスクリプトを実行する時には、絶対パスで指定すると良いかと思います(一旦スクリプト自体の絶対パスを取得してから、実行したいスクリプトの指定)。
スポンサーリンク
シェルスクリプトが置かれている絶対パスを取得サンプルコード
下記がサンプルコードになります。
#!/bin/sh #シェルスクリプトが置かれている絶対パスを取得 curDir=$(cd $(dirname $0);pwd) echo "このスクリプトが置かれている絶対パスを出力" echo $curDir echo "絶対パスで指定してスクリプトを実行" $curDir/tmp/sample.sh
絶対パスの取得は、curDir=$(cd $(dirname $0);pwd) の1行でできますが、少々ややこしいので下記に分解してみました。
1. $0はスクリプトのファイル名が格納されている変数です。
2. dirname $0 とすることで、スクリプトが置かれているディレクトリパスを出力できます。
(この時点では、まだ相対パス)
3. cd $(dirname $0) は、スクリプトの配置場所に移動(サンプルコードの例では実際の移動はされないです)を意味しています。
4. cd $(dirname $0);pwd では、pwdを実行することで絶対パスを出力します。
5. curDir=$(cd $(dirname $0);pwd)では、cd $(dirname $0);pwdを$()で囲むことで、絶対パスの出力結果をcurDirに入力します。
スポンサーリンク