如何在bash中获得无限的命令历史?

use*_*542 56 bash history

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

小智 72

它确实没有(很好)记录在案,我猜这个计划中 99% 的 bash 用户确实将 HISTSIZE 设置为一个非常大的数字。

在 GNU bash 中,历史是通过强大的 readline 库处理的。该库可以选择限制历史大小(readline 行话中的“stifle”)或不限制,bash 只是将 readline 历史设置为 stifled/unstifled。如果您查看例如 GNU bash 版本 4.2,文件 variables.c,第 4443 行,函数 void sv_histsize (char*),您会发现此注释(以及随后函数中的整个 stifling/unstifling):

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

所以这应该可以解决问题:

export HISTSIZE=""
Run Code Online (Sandbox Code Playgroud)

还有这个(如果你觉得挑衅):

export HISTSIZE="GOTCHA"
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助。

  • 我建议: export HISTSIZE="INFINITE" (19认同)
  • 愿无尾礼服保佑你 :) (2认同)