如何在不注销的情况下保存命令行历史记录?

如何在不注销的情况下保存命令行历史记录?

可能的重复:
有没有办法在 shell 之间共享 bash 时创建历史记录?

我正在打开多个控制台选项卡,并且我想使用从新打开的控制台选项卡中的第一个控制台选项卡执行的命令。

是否可以使用当前未打开的第二个选项卡的第一个选项卡执行的命令?

如何在控制台之间同步使用控制台历史记录?

答案1

根据文档,history -a应该将“新”历史行(自当前 bash 会话开始以来输入的历史行)附加到历史文件中。

答案2

您可能可以通过一系列设置来做到这一点,例如(我还没有完全测试过这一点)...

export PROMPT_COMMAND='history -a; history -c; history -r'

这将导致最近的命令被附加到您的.bash_history文件中,然后清除您的 shell 历史记录,然后重新读取该.bash_history文件,每次打印 shell 提示符时......所以每次您运行命令时。

因此,来自一个终端的命令将在每次运行时附加到.bash_history它们,然后第二个终端将在重新读取历史文件时拾取它们。

现在,请记住,这不是实时的,因为在运行命令之前,您的第二个 shell 不会重新读取第一个 shell 刚刚写入的历史文件,但它可能与您使用 bash 所得到的一样接近。

您可能会发现将HISTCONTROLenvvar 设置为ignoredups或 是有价值的erasedups,或者此选项可能不太适合您。

export HISTCONTROL='erasedups'

答案3

第2部分:根据文档history -r应该读取历史文件并替换当前的历史记录。

不确定“同步”是什么意思,但如果您的意思是自动同步 2 个控制台窗口/选项卡的历史记录,那么我认为答案是否定的。你必须手动完成。

相关内容