问题描述
是否可以将 zsh
shell 配置为在命令不存在时显示 bash
显示的内容,类似于:
kahless:~$ sysv-rc-conf
The program 'sysv-rc-conf' is currently not installed. You can install it by typing:
sudo apt-get install sysv-rc-conf
而不是 ZSH 提示:
[kahless /home/teward]% sysv-rc-conf
zsh: command not found: sysv-rc-conf
注意我不想更改提示本身,但我想将结果从 zsh: command not found
更改为 The program 'progname' is currently not installed. You can install it by typing:
或类似的 bash-like 输出。
ZSH可以做到这一点吗?
最佳方法
此功能由 command-not-found
包提供。 Ubuntu 默认安装它,并在 bash 中默认激活它,但在 zsh 中没有。只需将此行添加到您的 ~/.zshrc
:
. /etc/zsh_command_not_found
次佳方法
请注意,如果您在没有 /etc/zsh_command_not_found
文件的发行版之间共享您的 .zshrc,您可能需要检查该文件是否存在:
[[ -a "/etc/zsh_command_not_found" ]] && . /etc/zsh_command_not_found
此外,如果您使用的是 oh-my-zsh ,那么已经有一个插件 command-not-found
,您可以将其添加到您的 plugins
变量中以执行相同的操作。
第三种方法
如果您使用的是 oh-my-zsh,则可以改为在 .zshrc
中查找 “plugins”。
将 command-not-found
插件添加到要自动加载的插件列表中(此插件已默认安装)。
像这样:
# Which plugins would you like to load? (plugins can be found in ~/.oh-my-zsh/plugins/*)
# Custom plugins may be added to ~/.oh-my-zsh/custom/plugins/
# Example format: plugins=(rails git textmate ruby lighthouse)
# Add wisely, as too many plugins slow down shell startup.
plugins=(git command-not-found)