为什么同一用户会看到不同版本的 bash 历史记录

为什么同一用户会看到不同版本的 bash 历史记录

我使用 root ssh 进入我的服务器。有时,当我向后滚动历史记录时,我会看到较早会话的历史记录,但看不到最后一个会话的历史记录。为什么同一用户帐户会发生这种情况?与我使用的tty有关吗?重击4

答案1

每次关闭 shell 时,该特定 shell 的历史记录内容都会覆盖以前的 shell 写入的历史文件。

shell 历史记录的内容存储在该文件中$HOME/.bash_history。这是一个纯文本文件,因此您可以查看它。您可以设置许多历史记录选项来增强其行为。看看bash 手册页。其中大多数被命名为hist*HIST*。只要寻找他们就可以了。

特别是,shopt -s histappend使 bash 将当前会话的历史记录附加到历史文件中,而不是覆盖历史文件。

答案2

发生这种情况的原因有多种。

history -a首先,如果最后一个会话仍然处于活动状态,则除非从 shell 执行(追加新历史记录)或history -w(覆盖历史记录)命令,否则它不会将其历史记录保存到历史文件中。

此外,如果 shell 异常终止(例如由于 )kill -9,则只能将其用作最后的手段,这将阻止它保存历史记录。

我看到的另一个问题是使用script命令,尽管我怀疑这只是操作顺序和我自己的预测/一厢情愿的想法。运行的新 shell 会话script没有最新的历史记录,因为它重新读取文件。此外,在存在之后script,父 shell 不会使用在那里创建的历史记录进行更新。使用该history命令,这个问题应该很容易解决。

相关内容