Mon*_*ain 5 zsh terminal.app macos
当我登录 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
环境SHELL变量通常不被 shell 修改。它通常包含当前用户登录 shell 的完整路径,而不是当前运行的 shell。大多数情况下SHELL应该在 shell 启动之前设置。zsh不更改 的值SHELL,如果未设置,bash则将其设置回登录 shell 。SHELL
默认情况下HISTFILE在 中未设置zsh。如果你想保存历史记录,你必须将其设置为你想要使用的文件:
HISTFILE="${HOME}/.zsh_history"
Run Code Online (Sandbox Code Playgroud)
您还需要设置SAVEHIST为正整数值来告诉zsh在 中保存多少行HISTFILE,默认值是0(感谢Monkeybrain的提示)。您可能还想提高HISTSIZE,它表示 shell 会话中有多少行历史记录可用。它的默认值仅为30. 例如:
HISTSIZE=2000
SAVEHIST=2000
Run Code Online (Sandbox Code Playgroud)
这通常是在~/.zshrc配置文件中完成的。
zsh尝试通过检查EDITOR和VISUAL环境变量来猜测您的按键绑定首选项。如果其中一个包含字符串“vi”zsh将使用viins输入模式。Ctrl默认情况下,+A和Ctrl+都不会E在此模式下绑定。如果你想使用emacs输入模式(默认bash)你只需要运行
bindkey -e
Run Code Online (Sandbox Code Playgroud)
这也可以在~/.zshrc
总而言之,听起来您正在使用zsh默认配置运行。如果还没有~/.zshrc,您可以创建它并添加必要的设置。
| 归档时间: |
|
| 查看次数: |
6897 次 |
| 最近记录: |