0이 아닌 코드로 종료되는 터미널의 모든 명령은 터미널 창을 닫습니다.

0이 아닌 코드로 종료되는 터미널의 모든 명령은 터미널 창을 닫습니다.

처음에는 "배시 룰렛(Bash Roulette)"을 하는 것처럼 약간 웃겼지만...지금은 낡아가고 있습니다 ㅋㅋㅋ

0이 아닌 코드로 종료되는 터미널의 모든 명령은 터미널 창을 닫습니다.

set -e아마도 내 터미널 소스가 있는 어딘가에 bash 스크립트를 설정했을 수도 있다는 말을 들었습니다 .

확인해보니 .bash_profile/ .bashrc/ 거기에는 .profile없는 것 같습니다 .set -e

또 다른 명백한 범인이 있을까요?

답변1

set -e그렇군요. 제 문제를 일으킨 것은 제멋대로였기 때문입니다 .

내가 찾은 방법 set -ebash -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" 시나리오를 방지할 수 있습니다.

관련 정보