fot*_*kis 396
经过多年来的许多大型,丑陋的迭代和奇怪的边缘情况,我现在有一个专门用于此的.bashrc的简洁部分.
首先,您必须注释掉或删除.bashrc的此部分(Ubuntu的默认值).如果不这样做,那么某些环境(如运行screen会话)仍会截断您的历史记录:
# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)
# HISTSIZE=1000
# HISTFILESIZE=2000
Run Code Online (Sandbox Code Playgroud)
其次,将其添加到.bashrc的底部:
# Eternal bash history.
# ---------------------
# Undocumented feature which sets the size to "unlimited".
# http://stackoverflow.com/questions/9457233/unlimited-bash-history
export HISTFILESIZE=
export HISTSIZE=
export HISTTIMEFORMAT="[%F %T] "
# Change the file location because certain bash sessions truncate .bash_history file upon close.
# http://superuser.com/questions/575479/bash-history-truncated-to-500-lines-on-each-login
export HISTFILE=~/.bash_eternal_history
# Force prompt to write history after every command.
# http://superuser.com/questions/20900/bash-history-loss
PROMPT_COMMAND="history -a; $PROMPT_COMMAND"
Run Code Online (Sandbox Code Playgroud)
注意:每个命令在运行后立即写入,因此如果您不小心粘贴了密码,您不能只是"杀死-9 %%"以避免历史记录写入,您需要手动删除它.
另请注意,每个bash会话都会在内存中加载完整的历史记录文件,但即使您的历史文件增长到10MB(这需要很长很长时间),您也不会注意到对bash启动时间有太大影响.
Lri*_*Lri 271
设置HISTSIZE并HISTFILESIZE在.bashrc中为空字符串:
HISTSIZE=
HISTFILESIZE=
Run Code Online (Sandbox Code Playgroud)
在bash 4.3及更高版本中,您还可以使用HISTSIZE=-1 HISTFILESIZE=-1:
n. Setting HISTSIZE to a value less than zero causes the history list to be
unlimited (setting it 0 zero disables the history list).
o. Setting HISTFILESIZE to a value less than zero causes the history file size
to be unlimited (setting it to 0 causes the history file to be truncated
to zero size).
Run Code Online (Sandbox Code Playgroud)
sim*_*ont 35
正如JörgBeyer所述,HISTSIZE并且HISTFILESIZE是关键.
此外,你一定要检查环境变量HISTCONTROL,它可以让你做一些很酷的事情,比如不存储重复的历史命令(HISTCONTROL=erasedups).如果你必须浏览数百行cd ..或类似的行,那么无限的历史就没有意义了.
链接:在这里,并使用bash历史记录.bash Variable FAQ也值得浏览.
Jör*_*yer 22
这里至少有两个相关的环境变量:
我认为我们可以同意无限期这个词通常与非常大(或者你有无限的文件存储?).所以只需设置非常大的值.
| 归档时间: |
|
| 查看次数: |
110007 次 |
| 最近记录: |