在c shell中同步终端历史记录

在c shell中同步终端历史记录

为了工作,我使用远程桌面远程访问使用 c shell 而不是 bash 的 Linux 服务器。在会话中(我们称之为会话 1),我将在给定的终端中打开许多选项卡,并在所有选项卡中键入命令。有时我还会在各自的终端中打开带有多个选项卡的其他会话(让我们称之为会话 2 和会话 3),并在所有会话中键入许多命令。

我注意到,在任何会话的任何终端的任何选项卡中调用历史命令时,都不包括我在所有选项卡和会话中使用的所有命令。仅保存部分命令。

我想要这样的历史:

  • 记得全部键入命令,无论我在哪个选项卡、终端或会话中
  • 可从任何选项卡/终端/会话立即访问

虽然有一个伟大的邮政大约 12 年前,它描述了如何做到这一点,即针对 bash 环境,而不是 ac shell 环境。因此,没有,.bashrc而是一个.cshrc。我正在寻找一个在 c shell 环境中工作的解决方案。

更新:

我尝试将其添加到文件顶部.cshrc

set history=10000
set savehist=(10000 merge)
alias precmd 'history -L, history -S'

其中sethistory=10000设置历史列表的大小,

set savehist=(10000 merge).history设置会话退出时保存到历史列表中的行数,并且合并将会话的历史记录与退出时的整体历史记录合并,

alias precmd 'history -L; history -S'设置一些命令在终端上的每个命令运行之前运行。该-L选项将历史文件附加到当前历史列表中。该-S选项将历史列表写入文件。

这没有达到我想要的效果。现在,每次我在终端输入历史记录时,命令历史记录列表的大小都会增加戏剧性地。命令历史列表不是在会话中跨终端选项卡更新。

我也尝试过,没有任何改善:

set history = 10000
set histdup = erase
set savehist = (${history} merge lock)

alias precmd 'history -S'
alias postcmd 'history -M'

我不完全确定所有行的含义,但我知道这precmd应该意味着运行命令之前,执行此操作,并且postcmd应该意味着运行命令后执行此操作。该-M选项将历史文件的内容与当前历史列表合并,并按每个命令包含的时间戳对结果列表进行排序。

我觉得我已经很接近了,就像我缺少一些要添加到.cshrc文件中的关键行,或者也许我需要更改顺序。

相关内容