什么决定了 bash 历史命令中显示的内容?

什么决定了 bash 历史命令中显示的内容?

当我运行 时history,我得到了一个命令列表。但是,它似乎并不完整,即使在给定的时间段内也是如此。(感觉它没有连续覆盖过去的 N 个命令 - 感觉有些命令缺失了。)此外, 的输出history在不同的终端选项卡中也不同。这是因为直到关闭选项卡后历史记录才写入磁盘吗?这是否解释了为什么某些命令似乎会丢失,因为它们被关闭选项卡覆盖了?

我使用的是 OSX 10.8,它很有价值。

答案1

不同的终端运行着您的不同实例$SHELL(由于您使用的是 OSX,因此可能是 BASH)。每个实例都保留自己的历史记录,当该特定 BASH 实例退出时,这些历史记录将连接到全局会话历史记录中。

您可以尝试打开两个终端,运行一些命令,然后关闭两个终端并打开第三个终端。来自(现已关闭的)前两个终端的命令现在将出现在您的历史记录中。

还有一些 BASH 选项可以删除重复的命令,查看你的$HOME/.bashrc命令是否包含如下行:

export HISTCONTROL=ignoredups

该选项告诉 BASH 不要保存重复的命令。因此,如果您运行ls10 次,则只会保存一次。

答案2

每个 bash 实例都有 shell 历史记录。它在 bash 启动时被读入,在 bash 退出时被写出。强制关闭选项卡会终止 bash,导致其无法正常写出历史记录。

相关内容