是否可以将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
bash 的输出The program 'progname' is currently not installed. You can install it by typing:
或类似的输出。
ZSH可以做到这一点吗?
此功能由软件包提供。Ubuntu 默认安装它,并在 bash 中默认激活它,但在 zsh 中没有。只需将此行添加到您的:
command-not-found
~/.zshrc
请注意,如果您在没有文件的发行版之间共享 .zshrc,您可能需要添加检查文件是否存在
/etc/zsh_command_not_found
:此外,如果您使用的是oh-my-zsh,那么已经有一个插件 ,
command-not-found
您可以将其添加到plugins
执行相同操作的变量中。如果您使用的是oh-my-zsh,则可以改为在
.zshrc
.command-not-found
将插件添加到要自动加载的插件列表中(默认情况下已安装此插件)。像这样:
它的工作方式是通过 bash 中的 command_not_found_handle() 函数。bash 提供了一个钩子,它基本上是一个在找不到命令时调用的函数。Ubuntu 的 bash 实现会捕获它并进行包搜索,而 Debian 的 bash 不会(与 zsh 相同)。您可能想查看 zsh 的联机帮助页,看看它是否有类似的功能。
这是您可以开始的方法,希望 zsh 是相似的。
此外,如果您不希望 zsh 100% 有这种行为,您可以手动执行以下操作:
/usr/lib/command-not-found urxvt
或将 command-not-found 添加到您的 $PATH