由于我将 bash 历史记录置于源代码控制之下,我注意到有时历史记录的相当大的部分最终会重复,有时是在原始执行后数小时或数天。我使用 Debian 7.7 并具有以下配置:
shopt -s histappend
export HISTCONTROL=ignoreboth:erasedups
export HISTSIZE=1000000
export HISTFILESIZE=1000000
我怀疑多个终端之间存在一些交互,histappend
, 和erasedups
。我自己回答这个问题,但如果有人不同意或有更多细节,我想要其他答案!
编辑:我相信这是不是重复的——有很多问题询问如何忽略重复的条目;我问的是如何消除错误重复的历史片段周围的错误行为。 (整个块重复说我实际上只执行了一次。)
答案1
我已经尝试过删除erasedups
,这似乎可以解决问题。我的猜测是,当删除重复项时,历史记录的本地副本与要附加到历史记录文件的项目计数不同步,因此在附加过程中从历史记录中提取了太多内容。
答案2
我最好的选择是自从你设定ignoreboth
新的重复的内容会被忽略;旧的副本保留在历史记录中。尝试使用
HISTCONTROL=ignorespace:erasedups