如何在 zsh 中的终端之间共享历史记录?

如何在 zsh 中的终端之间共享历史记录?

如何实现使得输入的每个命令都在每个打开的终端的历史记录中可见?

当打开多个终端时,历史记录不会共享,即您在一个终端历史记录中输入的内容不会显示在另一个终端中。考虑一下 Bash 的替代方案 PROMPT_COMMAND="history -a"(在显示提示之前保存历史记录)。

答案1

以下选项适用:

  • 在执行每个命令之前保存它(这与 bash 的历史记录 -a 解决方案不同):

    setopt inc_append_history
    
  • 每次调用历史记录时读取历史文件,以及以下功能inc_append_history

    setopt share_history
    

这些可以在您的文件中设置.zshrc


⚠️ 要么设置inc_append_historyshare_history要么不设置。(见下面的评论)

  • 启用后share_history,它会读取并写入历史文件。
  • 启用时inc_append_history,它仅写入历史文件。

与bash相关的:是否可以立即写入 .bash_history ?

答案2

如果您使用 Robby Russell 的超棒 OhMyZSH,它将处理这些以及更多问题。

https://github.com/robbyrussell/oh-my-zsh/blob/master/lib/history.zsh

包括setopt inc_append_history

相关内容