![명령 프롬프트를 종료하기 전에 확인하세요.](https://linux55.com/image/31339/%EB%AA%85%EB%A0%B9%20%ED%94%84%EB%A1%AC%ED%94%84%ED%8A%B8%EB%A5%BC%20%EC%A2%85%EB%A3%8C%ED%95%98%EA%B8%B0%20%EC%A0%84%EC%97%90%20%ED%99%95%EC%9D%B8%ED%95%98%EC%84%B8%EC%9A%94..png)
exit
명령 프롬프트에 명령을 입력할 때마다 확인 메시지를 받으려고 합니다. 이를 위해 파일 trap
에서 사용을 시도했지만 어쨌든 원래 명령을 실행하므로 트랩은 해결책이 아닌 것 같습니다. .bashrc
이걸 가질 수 있는 방법이 없을까요?
이것은 작업을 완료하지 못하는 bashrc 스크립트 코드입니다.
function _exit() # Function to run upon exit of shell.
{
read -p "${RED}Are you sure? " REPLY
if [[ $REPLY =~ ^[Yy]$ ]]; then
echo -e "${RED}Bye${NC}"
exit 0
else
#I do not know what to do here to not exit
return
fi
}
trap _exit EXIT
답변1
쉘이 zsh
or bash
(모드는 아니지만 sh
) 이면 exit
함수가 생성됩니다. 또는(POSIX 셸에는 없음)에서 함수는 셸 내장 기능(예: 와 같은 특수 기능도 포함 exit
)보다 우선합니다. 따라서 함수의 이름을 바꾸고 함수 내부에서 사용하십시오. 물론, 그렇지 않으면 끝없는 재귀에 빠지게 될 것입니다.zsh
bash
exit
command exit
답변2
다시 로드 기능은 exit()
이 ^D
시나리오에 적합하지 않습니다. 그럼 얘기 좀 해보자 trap
.
귀하 else
의 절은 bash를 유지하거나 종료 신호를 무시하는 것이어야 합니다. 나도 무엇을 해야할지 모르겠습니다.
하지만 이제는 bash를 다시 열 수 있을 것 같습니다.
조건을 다음으로 바꾸면 else
:
echo
history -a
bash
그런 다음 프롬프트에서 종료를 취소하면 새 bash가 다시 열리고 이전 bash와 마찬가지로 아무 일도 일어나지 않은 것처럼 보입니다.
이 접근 방식에는 단점이 있습니다. 이전에 입력한 변수 할당을 잃게 됩니다. 아마도 이 문제를 해결할 수 있을 것입니다. 그러나 당신이 그것에 만족한다면 그게 전부입니다.
어쨌든 필요에 맞게 이 코드를 수정할 수 있습니다.