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