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

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

처음에는 "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 스크립트를 실행하기 위한 새로운 솔루션이 필요하지만 적어도 rogue 의 소스를 찾았습니다 set -e. 제대로 실행하기만 하면 ./my-dev-script.sh실망스러운 "Bash Roulette" 시나리오를 방지할 수 있습니다.

관련 정보