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


53

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


我知道没有内置机制来做到这一点。

我只是评论,所以当得到答案时,我也会知道!

2
debian-administration.org/articles/543可能是一个更好的答案。至少,它处理的无穷大值超过了超级用户的解决方案。:-)

你可以在实践中将其减少到9999(甚至999;我使用1000)。我从来没有发现大于1000的历史是有用的。如果我想恢复一个命令使其成为一个脚本,我通常在一千个命令中做得很好。否则,它可以去,并没有伤害。
Jonathan Leffler

@JonathanLeffler:的线是1300线,而且它的体积可以达到它的最小值。Ctrl-R非常有用。
l0b0年

Answers:


68

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

在GNU中,bash历史记录是通过强大的readline库来处理的。图书馆可以选择限制历史记录大小(阅读术语中的“扼杀”),而bash只是简单地将readline历史记录设置为stifled / unstifled。如果您查看例如GNU bash版本4.2,文件variables.c,第4443行,函数void sv_histsize(char *),您将找到此注释(以及后面的函数中的整个令人窒息/解开):

/ * HISTSIZE或HISTFILESIZE变量改变后该怎么办。
如果此HISTSIZE有一个值(并且它是数字),则扼杀历史记录。否则,如果此变量没有值,则
取消记录历史记录。如果name为HISTFILESIZE,并且其值为
numeric,则截断历史文件以保留不超过那么多
行。* /

所以这应该做的伎俩:

export HISTSIZE=""

还有这个(如果你感到挑衅):

export HISTSIZE="GOTCHA"

希望这可以帮助。


2
愿Tux祝福你:)
meeDamian 2014年

16
我建议:出口HISTSIZE =“INFINITE”
AmanicA 2015年
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.