HISTCMD는 비정상적인 동작을 보여주지만 절대로 재설정하지 않을 것이라고 장담합니다(모든 구성 파일을 확인했습니다). 따라서 프롬프트가 표시되기 전에 실수로 입력한 비밀번호가 포함된 항목을 삭제할 수 없습니다. "history -c"는 분명히 아무것도 하지 않습니다.
alex@Freesia:~$ echo $HISTCMD
916352
alex@Freesia:~$ echo $HISTCMD
931399
alex@Freesia:~$ history | tail
[...]
946443 2020-10-30-12:55history -d 871209
946444 2020-10-30-12:55history | tail
946445 2020-10-30-12:56echo $HISTCMD
946446 2020-10-30-12:56history | tail
alex@Freesia:~$ history -d 946444
bash: history: 946444: history position out of range
내 HIST 변수:
alex@Freesia:~$ env | grep HIST
HISTIGNORE=?:??
HISTCONTROL=ignoreboth
HISTTIMEFORMAT=%Y-%m-%d-%H:%M
HISTSIZE=2000
HISTFILESIZE=15000
리눅스 프리지아 4.9.0-13-amd64 #1 SMP 데비안 4.9.228-1 (2020-07-05) x86_64 GNU/Linux
답변1
@terdon이 제안한 것처럼 PROMPT_COMMAND가 범인입니다. 실수로 일부 명령줄을 잃어버린 후, 나는 다음에 있는 지침을 사용하여 "영원한 역사" 프로그램을 구현한 적이 있습니다.https://debian-administration.org/article/543/Bash_eternal_history. 결국 이 방법 사용을 중단했지만 아직까지
PROMPT_COMMAND="history -a;history -r"
위 페이지에서 권장하는 내용은 정확히 아닙니다.