为了工作,我使用远程桌面远程访问使用 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
文件中的关键行,或者也许我需要更改顺序。