![HISTCMD 在 bash 中不会正常递增](https://linux22.com/image/182587/HISTCMD%20%E5%9C%A8%20bash%20%E4%B8%AD%E4%B8%8D%E4%BC%9A%E6%AD%A3%E5%B8%B8%E9%80%92%E5%A2%9E.png)
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"
这并不完全是上面页面推荐的内容。