./
나는 쉘 스크립트에서 상대 경로를 먼저 배치하는 관행을 자주 보고 어느 정도 직접 채택합니다. 그런데 사정이 있는 걸까
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
사용하면 다른 방법으로 찾은 파일이 아닌 현재 디렉터리에 있는 파일을 참조하고 있음을 분명히 알 수 있습니다.