HISTCMD 在 bash 中不会正常递增

HISTCMD 在 bash 中不会正常递增

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

Linux Freesia 4.9.0-13-amd64 #1 SMP Debian 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" 

这并不完全是上面页面推荐的内容。

相关内容