bash - 无限 Bash 历史

标签 bash unix

<分区>

我希望我的 .bash_history 文件不受限制。例如所以我总是可以回去看看我是如何构建/配置某些东西的,或者那个漂亮的命令是什么,或者几周前某个命令是如何破坏某些东西的。如何更改此设置?

最佳答案

多年来经过许多大的、丑陋的迭代和奇怪的边缘案例,我现在有一个简明的部分 my .bashrc致力于此。

首先,您必须注释掉或删除.bashrc 的这一部分(Ubuntu 的默认设置)。如果您不这样做,那么某些环境(例如运行 screen session )仍会截断您的历史记录:

# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)
# HISTSIZE=1000
# HISTFILESIZE=2000

其次,将此添加到您的 .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"

注意:每条命令在运行后都会立即写入,因此如果您不小心粘贴了密码,您不能只使用“kill -9 %%”来避免写入历史记录,您需要手动将其删除。

另请注意,每个 bash session 都会在内存中加载完整的历史文件,但即使您的历史文件增长到 10MB(这将花费很长很长的时间),您也不会注意到太多对 bash 启动时间的影响。

关于bash - 无限 Bash 历史,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9457233/

相关文章:

linux - 我无法让我的期望脚本以 "expected"运行远程 bash 脚本

bash - 设置下一个/上一个工作日

bash - 静默执行 vim 命令然后在 vim 中回显

c - Linux 上的 read() 和页对齐缓冲区

unix - 如何从 grep 中保存匹配和不匹配的内容

bash - 使用 bash 在一个大文件中获取一行

bash - 如何通过将行号作为变量传递来删除一行?

linux - 如何正确使用手册页

shell - 通过删除最后 n 个字符来重命名文件

c++ - 使用 Unix 程序时间计算每次迭代的程序运行时间