在 OSX 10.8.5 上找不到 zsh 歷史記錄

在 OSX 10.8.5 上找不到 zsh 歷史記錄

當我登入 OSX 上的終端​​應用程式時,我的預設 shell 是/bin/bash.輸入echo $HISTFILE指向我/Users/monkeybrain/.bash_historyhead $(echo $HISTFILE)顯示該文件包含歷史條目。

如果我然後輸入zsh切換 shell,就會發生一些奇怪的事情。首先,即使我的提示符號發生了變化(所以看起來我在新的 shell 中),我的$SHELL環境變數仍然指向/bin/bash.該$HISTFILE變數現在為空,並且不存在~/.zsh_history.另外,我無法使用Ctrl-ACtrl-E透過命令列移動。

這裡發生了什麼事?

非常感謝,

MB

答案1

  • 環境SHELL變數通常不被 shell 修改。它通常包含當前使用者登入 shell 的完整路徑,不是目前正在運行的外殼。大多數情況下SHELL應該在 shell 啟動之前設定。zsh不更改 的值SHELL,如果未設置,bash則將其設置回登入 shell 。SHELL

  • 預設HISTFILE在 中未設定zsh。如果你想保存歷史記錄,你必須將其設定為你想要使用的檔案:

    HISTFILE="${HOME}/.zsh_history"
    

    您還需要設定SAVEHIST為正整數值來告訴zsh在 中要保存多少行HISTFILE,預設是0(謝謝猴腦以獲得提示)。您可能還想提高HISTSIZE,它表示 shell 會話中有多少行歷史記錄可用。它的預設值僅為30.例如:

    HISTSIZE=2000
    SAVEHIST=2000
    

    這通常是在~/.zshrc設定檔中完成的。

  • zsh嘗試透過檢查EDITORVISUAL環境變數來猜測您的按鍵綁定首選項。如果其中一個包含字串“vi”zsh將使用viins輸入模式。預設情況下, Ctrl+ACtrl+都不會E在此模式下綁定。如果你想使用emacs輸入模式(預設bash)你只需要運行

    bindkey -e
    

    這也可以在~/.zshrc

總而言之,聽起來您正在zsh使用預設配置運行。如果還沒有~/.zshrc,您可以創建它並添加必要的設定。

相關內容