如何配置 ZSH 以使用隔离的空历史记录启动每个 shell?

如何配置 ZSH 以使用隔离的空历史记录启动每个 shell?

我将 ZSH 与 Oh My Zsh 一起使用。我希望每个新的 ZSH shell 都以空的历史记录开始。在一个 shell 中键入的命令永远不会出现在另一个 shell 的历史记录中。我怎样才能实现这个目标?

我尝试将以下内容附加到我的~/.zshrc但无济于事:

setopt no_share_history
unsetopt share_history
unsetopt inc_append_history
unsetopt append_history

我也尝试过遵循这个回答使箭头键只显示本地历史记录,但这似乎没有效果。

目前,如果我打开一个新的 shell,它会导入历史记录。我似乎无法删除历史记录;当我删除时~/.zsh_history,一旦我打开一个新的外壳,它就会重新出现并显示整个旧内容。inc_append_history确实会阻止立即写入历史记录,但一旦 shell 关闭,历史记录最终仍会被保存。

答案1

将其添加到您的~/.zshrc文件中:

function erase_history { local HISTSIZE=0; }
erase_history

每次启动交互式 zsh shell 时,它都会删除历史记录。

答案2

HISTFILE仅当您设置变量(历史文件的路径)和SAVEHIST变量(要存储在其中的条目数量)时,才会保存 zsh 历史记录。

~/.zshrc因此,只需从设置它们的位置(可能是您的或其中包含的任何文件)删除这些变量定义即可。即使不只设置其中之一也足够了。

请注意,setopt no_share_historyand unsetopt share_history(或set +o nonosharehistory、 等 或options[sharehistory]=off) 严格等效。

相关内容