쉘 스크립트의 상대 경로는 점으로 시작해야 합니까?

쉘 스크립트의 상대 경로는 점으로 시작해야 합니까?

./나는 쉘 스크립트에서 상대 경로를 먼저 배치하는 관행을 자주 보고 어느 정도 직접 채택합니다. 그런데 사정이 있는 걸까

source ./foo/helper.sh

그리고

source foo/helper.sh

실제로는 다른 결과가 나올까요? 이 "약속"에 진실이 있습니까?

답변1

source ./foo/helper.sh
source   foo/helper.sh

둘은 동일해야 합니다. 그러나 이 두 가지는 Bash에도 없고 어쨌든 없습니다.

source ./helper.sh
source   helper.sh

그 이유는 일반 파일 이름의 경우 source디렉토리를 먼저 살펴보지만 $PATH슬래시가 포함된 파일 이름의 경우에는 이런 일이 발생하지 않기 때문입니다. helper.sh현재 디렉토리와 에 모두 a가 있으면 첫 $PATH번째는 전자를 찾고 두 번째는 후자를 찾습니다.

비슷한 고려 사항이 다른 프로그램에도 적용될 수 있으므로 ./foo대신 쓰기를 foo사용하면 다른 방법으로 찾은 파일이 아닌 현재 디렉터리에 있는 파일을 참조하고 있음을 분명히 알 수 있습니다.

관련 정보