在其他 Shell(如 Zsh)中启用“命令未找到”消息

在其他 Shell(如 Zsh)中启用“命令未找到”消息

我发现了如何通过添加到我的来允许“ ... command not found but can be installed with...”出现在 Oh-my-zsh 中。source /etc/zsh_command_not_found.zshrc

但是现在,当我输入一个不存在的命令但没有“...可以安装”消息时,没有输出,就好像我输入了一个没有输出的命令一样。

原始(预期)行为:

~$ Non_existant_command
Non_existant_command: command not found
~$

新的(不需要的)行为:

~$ Non_existant_command
~$

总的来说,我希望 bash 中的“未找到命令,但可以安装”消息出现在 zsh 中(或我正在使用的任何 shell)

答案1

这似乎是因为/etc/zsh_command_not_found调用了/usr/lib/command-not-found以下--no-failure-msg选项:

 % cat /etc/zsh_command_not_found
# (c) Zygmunt Krynicki 2007,
# Licensed under GPL, see COPYING for the whole text
#
# This script will look-up command in the database and suggest
# installation of packages available from the repository

if [[ -x /usr/lib/command-not-found ]] ; then
        if (( ! ${+functions[command_not_found_handler]} )) ; then
                function command_not_found_handler {
                        [[ -x /usr/lib/command-not-found ]] || return 1
                        /usr/lib/command-not-found --no-failure-msg -- ${1+"$1"} && :
                }
        fi
fi

在哪里

 % /usr/lib/command-not-found --help
Usage: command-not-found [options] <command-name>

Options:
  --version             show program's version number and exit
  -h, --help            show this help message and exit
  -d DATA_DIR, --data-dir=DATA_DIR
                        use this path to locate data fields
  --ignore-installed, --ignore-installed
                        ignore local binaries and display the available
                        packages
  --no-failure-msg      don't print '<command-name>: command not found'

如果您希望显示该消息,您可以制作zsh_command_not_found脚本的本地副本,编辑它以删除该选项,然后源反而。

相关内容