Bash가 명령 기록을 새로 고쳐 지울 수 있도록 하려면 어떻게 해야 합니까?

Bash가 명령 기록을 새로 고쳐 지울 수 있도록 하려면 어떻게 해야 합니까?

실수로 명령줄에 비밀번호를 입력하여 Bash 쉘 기록을 지워야 합니다. 이것은 쉽습니다 echo "" > ~/.bash_history.

.bash_logout만일을 대비해 내 것도 똑같이 추가했습니다 . 그런데 로그아웃/로그인 후 이력을 확인해보면 마지막으로 입력한 명령어가 히스토리 파일에 계속 남아있습니다. 좀 더 정확하게 말하면 마지막에 입력한 명령어와 exit로그아웃할 때의 명령어 두 가지가 있습니다 .

로그아웃할 때 지울 수 있도록 Bash가 명령 기록을 파일로 플러시하도록 하려면 어떻게 해야 합니까?

답변1

Bash는 종료되거나 명시적으로 호출할 때까지 기록 파일에 기록을 쓰지 않습니다 history -w. 따라서 현재 쉘의 기록에 비밀번호를 추가했다면 .bash_history아직 기록되지 않은 것이며 메모리에 남아 있을 뿐입니다. 실행하여 fc -l최근 명령 목록을 확인한 다음 history -d항목을 삭제할 수 있습니다.

$ 에코 황새치
황새치
앗, 그게 내 비밀번호야!
$ fc -l -2
1234 화
1235 에코 돛새치
$ 역사 -d 1235
$ fc -l -3
1234 화
1235 화
1236 역사-d 1236

이미 히스토리 파일을 작성한 경우(예: history -w디버그 PROMPT_COMMAND트랩이 있는 경우) 이를 수행하고 편집하십시오 .bash_history.

현재 셸의 기록을 완전히 잊으려면 설정을 해제 HISTFILE하고 셸이 종료될 때까지 설정되지 않은 상태로 유지되는지 확인하세요. 현재까지의 기록을 잊어버리고 녹음을 시작하고 싶다면 이것을 호출할 수 있습니다 history -c. 마지막 3개 기록 항목을 제외한 모든 항목을 삭제하려면 해당 항목을 설정한 HISTFILE=3다음 (별도의 명령줄에서) 다시 평소 값으로 설정하세요.

답변2

Bash의 매뉴얼 페이지는 .*rc 파일에 넣을 수 있는 두 가지 좋은 솔루션을 제공합니다.

  1. 내보내기HISTFILESIZE=0

  2. 내보내기HISTSIZE=0

로그인 셸에 수동으로 입력할 수도 있으며 동일한 효과를 갖습니다.

답변3

또한 로그아웃을 편집하는 데 문제가 있었습니다(내 데이터를 서버에 백업하는 백업 스크립트를 만들었습니다). 이 링크가 도움이 되었지만 우분투용입니다.

https://askubuntu.com/questions/293312/execute-a-script-upon-logout-reboot-shutdown-in-ubuntu

관련 정보