
當我登入 OSX 上的終端應用程式時,我的預設 shell 是/bin/bash
.輸入echo $HISTFILE
指向我/Users/monkeybrain/.bash_history
並head $(echo $HISTFILE)
顯示該文件包含歷史條目。
如果我然後輸入zsh
切換 shell,就會發生一些奇怪的事情。首先,即使我的提示符號發生了變化(所以看起來我在新的 shell 中),我的$SHELL
環境變數仍然指向/bin/bash
.該$HISTFILE
變數現在為空,並且不存在~/.zsh_history
.另外,我無法使用Ctrl-A
或Ctrl-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
嘗試透過檢查EDITOR
和VISUAL
環境變數來猜測您的按鍵綁定首選項。如果其中一個包含字串“vi”zsh
將使用viins
輸入模式。預設情況下, Ctrl+A和Ctrl+都不會E在此模式下綁定。如果你想使用emacs
輸入模式(預設bash
)你只需要運行bindkey -e
這也可以在
~/.zshrc
總而言之,聽起來您正在zsh
使用預設配置運行。如果還沒有~/.zshrc
,您可以創建它並添加必要的設定。