如何在多台机器之间共享zsh历史记录?

如何在多台机器之间共享zsh历史记录?,zsh,zshrc,Zsh,Zshrc,我有一个在机器之间共享配置文件的设置,我很满意,但是我发现我经常想在zsh(Ctrl+R)中搜索,我记不起在哪台机器上键入了命令。理想情况下,我希望这样可以搜索我的任何机器上以前的命令的规范化重复数据消除列表。考虑到我有时在没有网络连接的情况下同时在这些机器上工作,合并历史文件并保持所有内容同步的合理方式是什么?嗯,我想你可以通过某种方式识别你的帐户。。。然后您可以执行以下操作: 修改.zshrc以将dropbox或SCM中其他帐户的历史记录与当前历史记录相关联(如果这是当前计算机上启动的第一

我有一个在机器之间共享配置文件的设置,我很满意,但是我发现我经常想在zsh(Ctrl+R)中搜索,我记不起在哪台机器上键入了命令。理想情况下,我希望这样可以搜索我的任何机器上以前的命令的规范化重复数据消除列表。考虑到我有时在没有网络连接的情况下同时在这些机器上工作,合并历史文件并保持所有内容同步的合理方式是什么?

嗯,我想你可以通过某种方式识别你的帐户。。。然后您可以执行以下操作:

  • 修改.zshrc以将dropbox或SCM中其他帐户的历史记录与当前历史记录相关联(如果这是当前计算机上启动的第一个zsh)
  • 然后使用-n(按时间戳排序)对条目进行排序
  • 如果您设置了opt HIST_SAVE_NO_DUPS,我想zsh会删除重复项

然后您需要捕获shell退出,并将现有历史复制到dropbox/SCM/任何共享位置。

我为oh my zsh编写了这个插件:

一个Oh My Zsh插件,用于使用Git的GPG加密、互联网同步的Zsh历史记录

对于包含.zsh_历史记录的相关机器,您可以有一个NFS装载点。在NFS中,每台机器都需要将HISTFILE env var设置为该文件路径

HISTFILE env var是必需的,因为ZSH不接受符号链接,它将被使用符号链接目标的最新版本的文件替换

我没有测试上面所说的内容,因为我的设置是在使用OSX的VM和Parallels共享文件夹之间进行的。因此,对于NFS,文件的完整性(Orthor)可以考虑,也可以考虑Dropbox解决方案。
不确定,类似的内容可用于修复要合并的版本…

我使用以下命令:


sshusername@example.comcat~/.zsh/.zhistore | cat~/.zsh/.zhistore-| sort | uniq | tee~/.zsh/.zhistore | sshusername@example.comcat\>~/.zsh/.zhistorey

如果您同时(同时)在两台机器上工作,并且它们没有网络连接,除了在两台机器的外壳中手动重新键入命令外,我不确定是否有好的解决方案。将历史记录文件放在Dropbox上如何?我不使用Dropbox,但据我所知,我认为这不起作用,因为我将在多台(可能)脱机机器上同时修改该文件。Dropbox只会错误地自动合并或重命名我的历史文件,不是吗?顺便说一句,请检查setopt SHARE_history;历史记录在每个命令后提交。这样,多个shell可以共享相同的历史记录。当您退出第二个shell时,其中一个shell不会覆盖另一个shell的更改。这基本上是有效的,但遗憾的是,多行命令会以这种方式被破坏(带有
\
-continuation或
do
-
done
-块的行),使用一些第三方脚本并没有说明如何使用zsh。