명령 프롬프트를 종료하기 전에 확인하세요.

명령 프롬프트를 종료하기 전에 확인하세요.

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

쉘이 zshor bash(모드는 아니지만 sh) 이면 exit함수가 생성됩니다. 또는(POSIX 셸에는 없음)에서 함수는 셸 내장 기능(예: 와 같은 특수 기능도 포함 exit)보다 우선합니다. 따라서 함수의 이름을 바꾸고 함수 내부에서 사용하십시오. 물론, 그렇지 않으면 끝없는 재귀에 빠지게 될 것입니다.zshbashexitcommand exit

답변2

다시 로드 기능은 exit()^D시나리오에 적합하지 않습니다. 그럼 얘기 좀 해보자 trap.

귀하 else의 절은 bash를 유지하거나 종료 신호를 무시하는 것이어야 합니다. 나도 무엇을 해야할지 모르겠습니다.

하지만 이제는 bash를 다시 열 수 있을 것 같습니다.

조건을 다음으로 바꾸면 else:

echo
history -a
bash

그런 다음 프롬프트에서 종료를 취소하면 새 bash가 다시 열리고 이전 bash와 마찬가지로 아무 일도 일어나지 않은 것처럼 보입니다.

이 접근 방식에는 단점이 있습니다. 이전에 입력한 변수 할당을 잃게 됩니다. 아마도 이 문제를 해결할 수 있을 것입니다. 그러나 당신이 그것에 만족한다면 그게 전부입니다.

어쨌든 필요에 맞게 이 코드를 수정할 수 있습니다.

관련 정보