처음에는 "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" 시나리오를 방지할 수 있습니다.