我正在寻找与 bash 命令等效的 zsh 命令history -c,换句话说,清除当前会话的历史记录。在 zsh 中history -c返回 1 并显示错误消息history: bad option: -c。
为了澄清一下,我不是在寻找删除 内容的方法$HISTFILE,我只是想要一个命令将历史记录重置为打开终端时的状态。删除 的内容$HISTFILE与我想要的相反:它删除了我想要保留的历史记录并保留了我想要删除的历史记录(因为当前会话的历史记录会被附加到它上面,不管它的内容之前是否被删除)。
我现在使用了一种解决方法,但它显然不太理想:在当前会话中,我设置HISTFILE=/dev/null并关闭并重新打开终端。这会导致关闭会话的历史记录不会附加到$HISTFILE. 但是,我真的很喜欢history -cbash 之类的东西,它比关闭并重新启动终端要优雅得多。
是否有可能在所有 shell 之间共享单个命令历史记录?
我认为默认情况下历史记录会被首先退出的 shell 覆盖。之前我做过每个 shell 都有一个“名称”和自己的历史文件的东西,但现在我对 shell 的使用更加轻量级,所以感觉有点矫枉过正。
看来我没有启用 incapendhistory:
> setopt | grep inc
Run Code Online (Sandbox Code Playgroud)
跑步setopt incappendhistory解决了这个问题。然后,通过查看历史文件,我可以看到这些文件是立即附加的。
然而,这个历史记录似乎只有在打开新外壳后才可用于其他外壳(这可能是我所追求的行为)。sharedhistory在其他 shell 中使用命令进行的设置setopt立即可用。我实际上并不认为这就是我所追求的 - 因为在不同的 shell 中拥有不同的历史是有用的。我只是不想失去历史。