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

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

是否可以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 可以做到这一点吗?

答案1

此功能由command-not-found 安装命令未找到软件包。Ubuntu 默认安装它,并在 bash 中默认激活它,但在 zsh 中不激活。只需将此行添加到您的~/.zshrc

. /etc/zsh_command_not_found

答案2

请注意,如果您在没有文件的发行版之间共享 .zshrc,则可能需要添加检查,以检查文件是否存在/etc/zsh_command_not_found

[[ -a "/etc/zsh_command_not_found" ]] && . /etc/zsh_command_not_found

另外,如果你使用哦我的天啊,已经有一个插件,,command-not-found您可以将它添加到plugins执行相同操作的变量中。

答案3

如果你正在使用哦我的天啊,您可以直接在里面寻找“插件” .zshrc

添加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)

答案4

此外,如果您不希望 zsh 一直出现这种行为,您可以手动执行以下操作:

/usr/lib/command-not-found urxvt

或者将 command-not-found 添​​加到你的 $PATH

相关内容