在多个zsh shell中共享历史记录


4

我正在尝试设置,zsh以便它在不同的zsh会话之间共享命令历史记录:

  • 在多个标签中
  • 在多个gnome终端
  • 在不同的screen会议

我把它放进去了 .zshrc

#To save every command before it is executed (this is different from bash's history -a solution):
setopt inc_append_history

#To retrieve the history file everytime history is called upon.
setopt share_history

但这不起作用。

例如,我键入1命令:gedit afile 然后我转到zsh并输入history。我没有看到gedit afile

'setopt'的输出是

 % setopt
nohistbeep
histexpiredupsfirst
histfindnodups
histignorealldups
histignoredups
histignorespace
histnostore
histreduceblanks
histsavenodups
histverify
incappendhistory
interactive
monitor
promptsubst
sharehistory
shinstdin
zle

我怎样才能做到这一点?


如果跑步,输出是setopt多少?
simont

Answers:


4

你的问题的简单答案是你需要设置share_history,你这样做:

setopt share_history

因为你显然已经这样做了(而且这个选项实际上有效)。我建议你查一下:

  • 两个 shell 是否都有选项集;
  • 是否要输入带有前导空格的命令(因为这histignorespace会使它们被忽略)
  • $HISTFILE在所有的shell中都设置了相同的值吗?
  • 你是否真的保存了历史记录?比如,如果你echo 123在tab-1中发出。转到标签2,拨打电话history。它在那里吗?(根据你的问题,不是)。现在问题,fc -R(意味着重新读取历史文件),然后history它现在在那里?如果没有,您可能还想在tab-1上调用fc -A-A将强制附加历史文件)以确保将历史记录写入文件。

为了在每次调用历史记录检索历史文件,setopt share_history
Cees Timmerman

5

按下尝试搜索enter


我测试的是:

  • 打开2个zsh shell
  • 转到zsh shell 1并执行 echo "something"
  • 转到zsh shell 2,按enter,然后检查是否从shell 1中看到命令。

在我的情况,我将不会看到的命令,直到我按enter

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.