在多个终端窗口中保留 tcsh 历史记录

在多个终端窗口中保留 tcsh 历史记录

我们如何在多个终端上保存或维护相同的历史记录?

同样的问题,但对于 bash shell ,在下面的链接中讨论

在多个终端窗口中保留 bash 历史记录

让我知道 tcsh shell 的相应设置?

答案1

这些变量将历史记录设置为合并自身而不是覆盖,并且不保存重复项:

set history=1000
set histdup=erase
set savehist=(1000 merge)

秘密武器是这一行:

alias precmd 'history -S; history -M'

这将在打印提示之前保存并合并您的历史记录 - 即在您键入的每个命令之后。

以上所有内容都应添加到您的.tcshrc文件。

答案2

此外伊丹回答,我想补充一点,这alias precmd 'history -S; history -M'可能会弄乱历史文件,因为它还记录 SIGINT 和 EOF 信号(Ctrl+C 和 Ctrl+D)。

在此输入图像描述

更好的方法是在运行命令后保存并合并当前的 shell 历史记录。

您可以通过下面的设置来实现它,因为 tcsh 不会将 SIGINT 或 EOF 识别为有效命令。

alias postcmd       "history -S; history -M"

答案3

单个全局历史记录文件通常不是我们所需要的,因为它在同时处理多个选项卡时会混淆命令序列。

如果您想保留每个选项卡的历史记录,请使用以下方法:

set histfile=~/.history_`tty|sed "s#^.*/##"`
set history=1000
set savehist=(${history} merge)
alias postcmd 'history -S'

这将为每个选项卡创建单独的历史文件,具体取决于它们的 tty ID。

使用 xfce4-terminal,如果您不更改选项卡的顺序,并且不关闭除最右边的选项卡之外的选项卡,这将正确地将每个历史记录恢复到其关联的选项卡(以及路径)。由于重新排序选项卡会附带 tty ID,但 xfwm4 会话恢复将从头开始重新创建每个选项卡(分配从 0 开始的新 tty ID),因此会将历史文件恢复到“错误”选项卡(即,不是具有原始选项卡目录路径的选项卡)。我还没有找到如何跟踪这些变化的解决方案。

相关内容