別のスクリプトを呼び出すために、スクリプト内で独立したパスを設定しようとします。

別のスクリプトを呼び出すために、スクリプト内で独立したパスを設定しようとします。

次のファイルはディレクトリにあります。

path/to/file.sh
path/to/file2.sh

file2.sh内部通話はfile.sh次のように機能します。

path/to/file.sh
. ./path/to/file2.sh

ただし、ファイルが別のディレクトリからチェックアウトされると、次のようになります。

src/path/to/file.sh
src/path/to/file2.sh

file.shはfile2を見つけることができません。

考えられる解決策

1つの可能性は、特定のディレクトリが存在することを確認することです。

path/to/file.sh

if [ -d "src" ]; then
  . $PWD/src/path/to/file2.sh
else
  . $PWD/path/to/file2.sh
fi

ただし、別のディレクトリにあるファイルをチェックアウトすると、この問題が再発生します。

質問

ディレクトリ構造とは独立して動作するソリューションは何ですか?

ベストアンサー1

source "$(dirname -- "$0")/file2.sh"

ソースコードはfile2.sh呼び出しスクリプトと同じディレクトリにあります。

おすすめ記事