当前位置: 首页>>技术教程>>正文


zsh – 配置检测命令是否不存在,建议安装

问题描述

是否可以将 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)

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/12615.html,未经允许,请勿转载。