![配置检测命令是否存在,建议安装](https://linux22.com/image/1034724/%E9%85%8D%E7%BD%AE%E6%A3%80%E6%B5%8B%E5%91%BD%E4%BB%A4%E6%98%AF%E5%90%A6%E5%AD%98%E5%9C%A8%EF%BC%8C%E5%BB%BA%E8%AE%AE%E5%AE%89%E8%A3%85.png)
是否可以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