在 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应在 shell 启动前设置。zsh不会更改的值SHELL,如果未设置bash,则将其设置回登录 shell 。SHELL

  • 默认情况下HISTFILE未设置zsh。如果您想保存历史记录,则必须将其设置为要用于此目的的文件:

    HISTFILE="${HOME}/.zsh_history"
    

    您还需要设置SAVEHIST为正整数值来指示zsh要保存多少行HISTFILE,默认值为0(谢谢猴脑提示)。您可能还想提高HISTSIZE,这表示 shell 会话中有多少行历史记录可用。其默认值仅为30。例如:

    HISTSIZE=2000
    SAVEHIST=2000
    

    这通常在配置文件中完成~/.zshrc

  • zshEDITOR通过检查和环境变量来猜测您的按键绑定偏好VISUAL。如果其中一个包含字符串“vi”,zsh则将使用viins输入模式。默认情况下, Ctrl+ACtrl+E均不绑定在此模式下。如果您想使用emacs输入模式(默认为bash),只需运行

    bindkey -e
    

    这也可以在~/.zshrc

总的来说,您似乎正在zsh使用默认配置运行。如果还没有~/.zshrc,您可以创建它并添加必要的设置。

相关内容