我在按照我想要的方式设置 Bash 的终端历史记录时遇到了很多麻烦。我希望没有重复的条目,如果我输入命令,我希望保存它并删除上面的重复项。
问题是该history
命令显示它正在按照我想要的方式运行,但是一旦我注销,重复项就会再次回来。我认为这只是将历史附加到现有历史上。我的文件中有这些行.bashrc
:
HISTCONTROL=ignoreboth:erasedups
shopt -u histappend
我什至尝试取消注释shopt
,但它仍然会在注销时附加历史记录。我怎样才能让历史记录与我注销之前的情况一模一样?
答案1
对于重复项,应该erasedups
执行您想要的操作 - 只需注意,在将新条目添加到历史记录时会触发删除重复项,并且它会删除命令的所有旧出现,只留下最近的命令。
回答问题“我怎样才能让历史记录与我注销之前的情况一模一样?”
在我看来,这只能偶尔有用。 (否则你为什么要使用历史记录?)你可以通过发出来做到这一点
history -c; history -r
这将清除当前保存在内存中的所有历史记录条目,然后从历史文件中重新读取整个历史记录。因此,自从登录到当前 shell 会话以来您发出的所有命令都会被忘记。我发现它在我进行大量测试(许多类似的命令,但不是真正重复)的情况下非常有用,然后不想让我的历史记录被破坏 - 所以我在我的.bashrc
:
alias hrr='history -c; history -r'
(hrr
被记住为“历史重读”)。