처음에는 "배시 룰렛(Bash Roulette)"을 하는 것처럼 약간 웃겼지만...지금은 낡아가고 있습니다 ㅋㅋㅋ
0이 아닌 코드로 종료되는 터미널의 모든 명령은 터미널 창을 닫습니다.
set -e
아마도 내 터미널 소스가 있는 어딘가에 bash 스크립트를 설정했을 수도 있다는 말을 들었습니다 .
확인해보니 .bash_profile
/ .bashrc
/ 거기에는 .profile
없는 것 같습니다 .set -e
또 다른 명백한 범인이 있을까요?
답변1
set -e
그렇군요. 제 문제를 일으킨 것은 제멋대로였기 때문입니다 .
내가 찾은 방법 set -e
은bash -lx
가장 좋은 방법은 다음을 사용하는 것입니다.
bash -lx > lx.log 2>&1
set
그런 다음 해당 로그 파일을 열고 ... 을 검색하십시오 .
일단 그 방법을 찾으면 set -e
해당 줄을 제거할 수 있으며 문제는 사라져야 합니다! (머신을 다시 시작하는 것이 좋은 생각일 수도 있습니다.)
내 경우에는 set -e
.bash_profile 소스 파일에 있었지만 해당 줄은 .bash_profile 자체에는 없었습니다.
답변2
단지 문제를 해결하고 싶다면 set +e
귀하의 .bashrc
—끝.
발굴하러 갈 수 있습니다. 다른 곳이 있을 set -e
수도 있지만 그렇게 하면 많은 일이 처리될 것입니다.
그러나 이것이 set -e
귀하의 일부인 경우 $PROMPT_COMMAND
위의 작업은 작동하지 않습니다. printf '%s\n' "$PROMPT_COMMAND"
그 안에 무엇이 들어 있는지 확인해보세요 .
답변3
내 경우에는 set -e
내 bash 시작 중 어느 곳에도 없었고 set +e
내 항목에 추가해도 .bashrc
문제가 해결되지 않았습니다.
set -e
내 프로젝트에서 자주 실행하는 bash 스크립트에 이 스크립트가 포함되어 있었고 . ./my-dev-script.sh
이를 사용하여 해당 스크립트를 실행하고 있었습니다.내 bash 별칭을 존중하세요.
내가 깨닫지 못한 것은 추가 항목을 .
앞에 두고 실행하면 스크립트의 bash 옵션이 내 모든 일반 터미널 세션에 적용된다는 것입니다.
내 개인 bash 별칭을 존중하는 bash 스크립트를 실행하기 위한 새로운 솔루션이 필요하지만 적어도 악성 set -e
. 정상적으로 실행하면 ./my-dev-script.sh
실망스러운 "Bash Roulette" 시나리오를 방지할 수 있습니다.