Shell

如何配置 ZSH 以使用隔離的空歷史記錄啟動每個 shell?

  • June 1, 2020

我將 ZSH 與 Oh My Zsh 一起使用。我希望每個新的 ZSH shell 都以空的歷史記錄開始。在一個 shell 中鍵入的命令永遠不會出現在另一個 shell 的歷史記錄中。我怎樣才能做到這一點?

我嘗試將以下內容附加到我~/.zshrc的無濟於事:

setopt no_share_history
unsetopt share_history
unsetopt inc_append_history
unsetopt append_history

我也試過按照這個答案讓箭頭鍵只顯示本地歷史,但這似乎沒有效果。

目前,如果我打開一個新外殼,它會導入歷史記錄。我似乎無法刪除歷史記錄;當我 delete 時~/.zsh_history,一旦我打開一個新的 shell,它就會與整個舊內容一起重新出現。inc_append_history確實會阻止立即寫入歷史記錄,但是一旦關閉外殼,歷史記錄最終仍將被保存。

HISTFILE僅當您同時設置變數(歷史文件的路徑)和SAVEHIST變數(要儲存在那裡的條目數量)時,才會保存 zsh 歷史記錄。

因此,只需從設置它們的任何位置(可能是您的~/.zshrc或其中包含的任何文件)中刪除這些變數定義。即使不只設置其中一個也足夠了。

注意setopt no_share_historyand unsetopt share_history(or set +o nonosharehistory, etc or options[sharehistory]=off) 是嚴格等價的。

將此添加到您的~/.zshrc文件中:

function erase_history { local HISTSIZE=0; }
erase_history

每次啟動互動式 zsh shell 時,它都會清除歷史記錄。

引用自:https://unix.stackexchange.com/questions/590187