쉘 스크립트를 소싱 할 때 shebang 행은 무시됩니다. 잘못된 shebang을 넣으면 스크립트가 잘못 실행되었음을 사용자에게 경고 할 수 있습니다.
#!/bin/bash source-this-script
# ...
오류 메시지는 다음과 같습니다.
/bin/bash: source-this-script: No such file or directory
(임의의) 인수 이름은 이미 강력한 힌트를 제공하지만 오류 메시지는 여전히 100 % 명확하지 않습니다. 우리는 source-this-script
당신의 어딘가에 있는 유틸리티 스크립트로 이것을 고칠 수 있습니다 PATH
:
#!/bin/sh
echo >&2 "This script must be sourced, not executed${1:+: }${1:-!}"
exit 1
이제 오류 메시지는 다음과 같습니다.
This script must be sourced, not executed: path/to/script.sh
다른 접근법과의 비교
다른 답변과 비교할 때,이 접근 방식은 각 스크립트에 대한 최소한의 변경 만 필요합니다 (그리고 shebang 행을 사용하면 편집기에서 파일 유형 감지에 도움이되고 쉘 스크립트 언어를 지정하므로 이점도 있습니다). 단점은 다소 불명확 한 오류 메시지이거나 다른 셸 스크립트를 한 번 추가 한 것입니다.
bash path/to/script.sh
그래도 @muru 덕분에 명시적인 호출을 막을 수는 없습니다 .
x
명령을 포함 하는 한 줄짜리 쉘 스크립트를 작성하는. your-script-to-be-sourced
경우 괜찮지 만 실행하려면bash your-script-to-be-sourced
금지해야합니까? 이 제한의 요점은 무엇입니까?