避免在 ssh 连接断开时丢失历史记录

避免在 ssh 连接断开时丢失历史记录

当我切换 VPN 或关闭笔记本电脑时,我的 ssh 连接会中断 - 这是可以接受的。但我想被提醒上次运行时我在做什么(我经常使用 rsync 来移动文件)。

但是当我执行history这些命令时,它们并没有出现。虽然我不知道 zsh 何时提交历史记录,但似乎它并没有.zsh-history在调用命令后立即将其写入。

ZSH 有没有办法立即添加命令.zsh-history

其他信息

我隐约记得设置了一个在选项卡之间共享历史记录的变量,但我找不到它(显然这还不够)。这没有返回任何内容:

env | grep HIST

答案1

这不返回任何内容:

env | grep HIST

答案是否定的,原因有二:

  • 如果它由环境变量控制,但该变量尚未设置,那么您将无法在环境中找到它。
  • 实际上,控制这一点的并不是环境变量,而是 shell 选项。

Zsh 有三个相关的 shell 选项INC_APPEND_HISTORYINC_APPEND_HISTORY_TIMESHARE_HISTORY。请注意,这三个是互斥的:您应该只设置其中一个,而不要设置其他的。

我依稀记得设置了一个在选项卡之间共享历史记录的变量

听起来你想要SHARE_HISTORY。在这种情况下,将其添加到你的.zshrc文件中:

setopt sharehistory  # uppercase and underscores are optional

将来,如果您想在命令行上检查 shell 选项,您可以这样做:

% set -o | grep hist
noappendhistory       off
nobanghist            off
cshjunkiehistory      off
extendedhistory       off
histallowclobber      off
nohistbeep            off
histexpiredupsfirst   off
histfcntllock         on
histfindnodups        off
histignorealldups     on
histignoredups        off
histignorespace       off
histlexwords          off
histnofunctions       off
histnostore           off
histreduceblanks      off
nohistsavebycopy      off
histsavenodups        on
histsubstpattern      off
histverify            off
incappendhistory      off
incappendhistorytime  off
sharehistory          on
%

相关内容