如何在 bash 中获取无限的命令历史记录?

如何在 bash 中获取无限的命令历史记录?

我设置了export HISTSIZE=99999999999999,但这是最好的方法吗?我不知道是否会发生溢出。我正在寻找一种经过测试的、可靠的方法来删除命令历史限制。

答案1

真的是不是(充分)记录在案,我猜 99% 的 bash 用户都会将 HISTSIZE 设置为非常大的数字。

在 GNU bash 中,历史记录是通过强大的 readline 库来处理的。该库可以选择限制历史记录大小(readline 术语中为“抑制”)或不限制,并且 bash 只是将 readline 历史记录设置为抑制/不抑制。如果您查看 GNU bash 版本 4.2、文件 Variables.c、第 4443 行、函数 void sv_histsize (char*),您会发现此注释(以及后面函数中的全部抑制/不抑制):

/* HISTSIZE 或 HISTFILESIZE 变量更改后要做什么。
如果此 HISTSIZE 有值(并且是数字),则抑制历史记录。否则,如果此变量没有值,则
取消抑制历史记录。如果名称是 HISTFILESIZE,并且其值为
数字,则截断历史记录文件以容纳不超过那么多
行。*/

因此这应该可以解决问题:

export HISTSIZE=""

还有这个(如果你觉得不服气的话):

export HISTSIZE="GOTCHA"

希望这可以帮助。

相关内容