다른 스크립트를 호출하기 위해 스크립트 내에서 독립적인 경로를 설정하려고 노력합니다.

다른 스크립트를 호출하기 위해 스크립트 내에서 독립적인 경로를 설정하려고 노력합니다.

다음 파일은 디렉터리에 있습니다.

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를 찾을 수 없습니다.

가능한 해결책

한 가지 가능성은 특정 디렉토리가 존재하는지 확인하는 것입니다.

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호출 스크립트와 동일한 디렉터리에 있습니다.

관련 정보