![当我重复使用和修改条目时,如何停止 bash 编辑历史记录?](https://linux22.com/image/55544/%E5%BD%93%E6%88%91%E9%87%8D%E5%A4%8D%E4%BD%BF%E7%94%A8%E5%92%8C%E4%BF%AE%E6%94%B9%E6%9D%A1%E7%9B%AE%E6%97%B6%EF%BC%8C%E5%A6%82%E4%BD%95%E5%81%9C%E6%AD%A2%20bash%20%E7%BC%96%E8%BE%91%E5%8E%86%E5%8F%B2%E8%AE%B0%E5%BD%95%EF%BC%9F.png)
当您重复使用和编辑以前的命令时,bash 的某些实例会更改命令历史记录,而其他实例显然不会。我一直在搜索,但找不到任何说明如何防止历史记录中的命令在重用和编辑时被修改的内容。
有这样的问题这个,但这似乎是在说如何应对正在编辑的历史。我最近才遇到一个 bash 实例,当您重用命令时,它会编辑历史记录 - 我以前使用过的所有 bash shell(据我所知)都已配置为在您重用命令时不会更改历史记录并编辑命令。 (也许我只是在过去 15 年左右的时间里没有适当关注我的 shell 历史......)
所以这可能是最好的问题:我可以告诉 bash 永远不要修改历史记录 - 如果可以,如何修改?
答案1
事实证明revert-all-at-newline
就是答案。我需要包含set revert-all-at-newline on
在我的~/.inputrc
文件中,因为set
在 bash 提示符下使用该命令没有效果。 (当然,我必须启动一个新的 shell。)
另外,我发现~/.inputrc
加载了代替 /etc/inputrc
如果存在,这意味着当您创建~/.inputrc
.要解决此问题,请~/.inputrc
从$include /etc/inputrc
.
感谢@StéphaneChazelas 为我指明了正确的方向。
答案2
在 ~/.bashrc 中你可以添加
shopt -s histappend