'set -e'를 입력하면 bash가 종료됩니다.

'set -e'를 입력하면 bash가 종료됩니다.

bash버전 에서 4.4.12다음을 입력하면:

set -e

명령 프롬프트에서 쉘이 종료되고 128.

set -u괜찮을 때 왜 이런 일이 발생합니까 ?

답변1

예를 들어 확장의 일부로 0이 아닌 종료 상태를 반환하는 명령이 있는 경우 PROMPT_COMMAND(에서 프롬프트를 인쇄하기 전에 실행됨 ) 옵션을 bash설정하면 셸이 즉시 종료됩니다. .errexitset -e

DEBUG또 다른 가능성은 0이 아닌 종료 상태를 반환하는 트랩 세트 가 있다는 것입니다 . DEBUG그러나 트랩이 실행됩니다 .~ 전에Enter명령이 호출되므로 를 누른 후 즉시 쉘이 종료되지 않고 set -e대신 다음 명령을 시작하기 전에 종료됩니다.

set -u쉘 옵션 을 설정 하면 됩니다 nounset. 이 옵션은 양식 $@$*. set -e이 옵션도 적용되지 않는 한 쉘이 종료되지 않습니다 .

실제로set -u그리고PS1셸 의 설정되지 않은 변수~ 할 것이다errexit로 옵션을 설정하자마자 종료됩니다 set -e.

관련 정보