
간단한 스크립트 사용:
echo "file: $0"
다음과 같이 호출되면:
배시 myscript.sh
또는
./myscript.sh
file: myscript.sh
예상대로 스크립트( )의 파일 이름을 제공 하지만 호출되면 다음과 같습니다.
소스 myscript.sh
또는
. ./myscript.sh
bash
스크립트 파일 이름 대신 쉘 이름( )을 제공합니다 .
왜 이런가요?
답변1
첫 번째 호출은 스크립트를 해석하기 위해 새로운 bash 인스턴스를 시작합니다. 즉, bash가 $0
해당 경로로 설정됩니다.
두 번째 호출은 파일을 실행 파일로 처리하고 실행하므로 $0
해당 파일을 가리킵니다.
후자의 두 호출은 파일을 현재 bash 인스턴스에 로드하므로 $0
그곳을 가리킵니다.
주의: #2는 실행 가능한 파일이 필요하지만 #1, #3, #4는 그렇지 않습니다.