无限的 Bash 历史记录 [已关闭]

问题描述 投票:0回答:4

我希望我的

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

bash unix
4个回答
605
投票

多年来,经过多次大型、丑陋的迭代和奇怪的边缘情况,我现在有一个简洁的 我的

.bashrc
专门用于此内容。

首先,您必须注释掉或 删除

.bashrc
的这一部分(Ubuntu 默认)。如果您不这样做,那么某些环境(例如运行
screen
会话)仍会截断您的历史记录:

# 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 会话都会在内存中加载完整的历史文件,但即使您的历史文件增长到 10MB(这将需要

很长时间),您也不会注意到对 bash 启动有太大影响时间。


438
投票
将.bashrc中的

HISTSIZE

HISTFILESIZE
设置为空字符串:

HISTSIZE= HISTFILESIZE=

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).

bash --version

 检查您的 bash 版本。


58
投票
正如 Jörg Beyer

在他的回答中提到HISTSIZE

HISTFILESIZE
 是关键。

此外,您应该

一定检查环境变量HISTCONTROL

,它可以让您做一些很酷的事情,例如不存储重复的历史命令(
HISTCONTROL=erasedups
)。如果您必须浏览数百行 
cd ..
 或类似内容,那么拥有无限历史记录是没有意义的。

链接:

此处使用 bash 历史记录。 bash 变量常见问题解答也值得浏览


32
投票
这里(至少)有两个相关的 bash 环境变量:

    HISTSIZE:
  • 存储在内存中的条目数
  • HISTFILESIZE:
  • 存储在历史文件中的行数
**详情请看

这里

我认为我们可以同意术语“无限”通常与“非常大”相同(或者您有无限的文件存储空间吗?)。所以只需将值设置得很大即可。

© www.soinside.com 2019 - 2024. All rights reserved.