bash
버전 에서 4.4.12
다음을 입력하면:
set -e
명령 프롬프트에서 쉘이 종료되고 128
.
set -u
괜찮을 때 왜 이런 일이 발생합니까 ?
답변1
예를 들어 확장의 일부로 0이 아닌 종료 상태를 반환하는 명령이 있는 경우 PROMPT_COMMAND
(에서 프롬프트를 인쇄하기 전에 실행됨 ) 옵션을 bash
설정하면 셸이 즉시 종료됩니다. .errexit
set -e
DEBUG
또 다른 가능성은 0이 아닌 종료 상태를 반환하는 트랩 세트 가 있다는 것입니다 . DEBUG
그러나 트랩이 실행됩니다 .~ 전에Enter명령이 호출되므로 를 누른 후 즉시 쉘이 종료되지 않고 set -e
대신 다음 명령을 시작하기 전에 종료됩니다.
set -u
쉘 옵션 을 설정 하면 됩니다 nounset
. 이 옵션은 양식 $@
과 $*
. set -e
이 옵션도 적용되지 않는 한 쉘이 종료되지 않습니다 .
실제로set -u
그리고PS1
셸 의 설정되지 않은 변수~ 할 것이다errexit
로 옵션을 설정하자마자 종료됩니다 set -e
.