如何停止Bash附加历史记录


9

我想要用自己的方式设置Bash的终端历史记录时遇到很多麻烦。我希望没有重复的条目,如果输入命令,我希望将其保存,并将上面的重复项删除。

问题是该history命令向我显示了它按照我想要的方式运行,但是一旦我注销,重复项就会再次出现。我相信这只是将历史添加到现有的历史上。我的.bashrc文件中包含以下几行:

HISTCONTROL=ignoreboth:erasedups
shopt -u histappend

我什至尝试取消注释shopt,但是它仍然在注销时附加历史记录。在注销之前,如何获得历史记录?


2
这是一个很好的解释在这里:unix.stackexchange.com/questions/18212/...
jasonwryan

Answers:


7

erasedups应该做你在考虑到重复想要的东西-只需要注意消除重复在追加一个新条目历史的时刻触发,它会删除所有旧事件的命令,只留下最近的。


回答问题“ 我如何拥有与注销之前的历史完全相同的历史?

以我的看法,这只能偶尔使用。(否则,为什么要使用历史记录?)您可以通过发行

history -c; history -r

这将清除当前保存在内存中的所有历史记录条目,然后从历史记录文件中重新读取整个历史记录。因此,您忘记了自登录当前Shell会话以来发出的所有命令。我发现在进行大量测试(很多类似的命令,但实际上不是重复的)然后又不想让我的历史记录被浪费的情况下,它非常有用-因此,我在其中有一个别名.bashrc

alias hrr='history -c; history -r'

hrr被记住为“历史重读”)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.