한 번 이상 실수로 여러 명령을 실행하고 내 배쉬 기록을 오염 시켰습니다. bash 기록을 저장하지 않고 터미널을 닫으려면 어떻게해야합니까? Fedora를 사용하고 있습니다.
답변
쉘 히스토리는 HISTFILE
변수가 나타내는 파일에 저장됩니다 . 그래서:
unset HISTFILE
이것은 zsh에도 적용되지만 ksh에는 적용되지 않습니다. ksh $HISTFILE
는 쉘이 시작될 때 표시되는 파일에 계속 저장 합니다 (역순으로 쉘을 시작하면 ksh에 히스토리를 저장하기로 결정 함).
답변
짧은 답변:
프롬프트에서 이것을 입력하십시오.
$ kill -9 $$
이것은 바로 할 수있는 쉘없이 쉘을 죽일 것을 , 역사, 저장, 트랩으로 신호를 같은 실행 ~/.bash_logout
, 정지 작업에 대한 경고, 또는 좋은 물건 중 하나.
긴 대답 :
참고 :이 옵션은 상호 배타적이지 않습니다 . 한 번에 모두 사용할 수 있습니다.
옵션 1:
히스토리 파일을 어지럽히는 데있어 완벽 주의자라면 HISTIGNORE
기록하고 싶지 않은 명령을 포함 하도록 변수를 수정하면 됩니다. 예를 들어, 추가 할 경우 HISTIGNORE='ls*:cd*'
사용자에 ~/.bashrc
의 다음 인스턴스 ls
및 cd
히스토리 파일에 삽입되지 않습니다.
옵션 2 :
명령별로 명령에서 히스토리에서 제외되는 명령을 제어하려는 경우 HISTCONTROL='ignorespace'
공백으로 시작하는 명령 행이 생략되도록 설정할 수 있습니다 . 를 사용 ignoreboth
하면 반복되는 줄도 생략됩니다. 그런 다음 명령을 입력하기 전에 스페이스 바를 누르면 히스토리 파일에 표시되지 않습니다.
옵션 3 :
터미널을 닫을 때 셸이 즉시 종료되도록 trap
하려면 터미널 프로그램이 셸을 보내는 신호 ( xterm
예 : 전송 SIGHUP
한 다음 셸이 종료 될 때까지 기다림)를 할 수 있습니다. 이 신호를받습니다. 이것을 다음에 추가하십시오 ~/.bashrc
.
# don't record history when the window is closed
trap 'unset HISTFILE; exit' SIGHUP
답변
나는 history -c
바로 전에 아무도 제안하지 않은 것을보고 놀랐습니다 exit
. 잘 할 IINM (나는 전문가가 아닙니다).
답변
bash가 히스토리 파일을 판별하기 위해 사용하는 두 가지 환경 변수와 쉘이 종료 될 때 기록 할 행 수는 두 개입니다.
다음 중 하나를 사용하여 세션 히스토리를 버릴 수 있습니다 (히스토리 파일에서 생략하려는 세션 중에 설정 됨).
HISTFILE=/dev/null
또는
HISTSIZE=0
이 중 하나는 Bdora on Fedora에서 잘 작동합니다.