(2x) zsh:未找到命令

(2x) zsh:未找到命令

我最终决定冒险尝试一下 zsh。在 CentOS 7 机器上运行。唯一令我感到奇怪的是,由于某种原因,每次我输入未知命令时,我都会收到两次命令未找到的信息:

例如,如果我输入“失败”

zsh: fail: command not found...
zsh: command not found: fail

我一生都无法弄清楚为什么会出现这种情况,也无法找到其他似乎遇到此问题的人。也许我的 Google-fu 不够强大,但任何指示将不胜感激。

到目前为止,我的 .zsh 只是基本的:

HISTFILE=~/.histfile
HISTSIZE=10000
SAVEHIST=10000

bindkey -e


zstyle :compinstall filename '/home/bmgraves/.zshrc'
autoload -Uz compinit
compinit

与bash:

bash: fail: command not found...

tcsh:

fail: Command not found.



print $+functions[command_not_found_handler]

+zsh:2> print 1
 1

zsh -x:

+zsh:7> fail
+command_not_found_handle:1> local 'runcnf=1'
+command_not_found_handle:2> local 'retval=127'
+command_not_found_handle:5> [[ $- -regex-match i ]]
+command_not_found_handle:8> [ '!' -S /var/run/dbus/system_bus_socket ']'
+command_not_found_handle:11> [ '!' -x /usr/libexec/packagekitd ']'
+command_not_found_handle:14> [ ']'
+command_not_found_handle:17> [ 1 -eq 1 ']'
+command_not_found_handle:18> /usr/libexec/pk-command-not-found fail
zsh: fail: command not found...
+command_not_found_handle:19> retval=127
+command_not_found_handle:26> return 127
zsh: command not found: fail

答案1

当没有找到命令时,zsh 调用该函数command_not_found_handler。此函数的典型用途是建议一种安装该命令的方法(如果该命令属于某个软件包的一部分,而该软件包是您的发行版的一部分但尚未安装)。

在 zsh 中,如果函数返回非零状态,zsh 会打印其通常的错误消息。 Bash 有类似的功能(该函数被称为command_not_found_handle),但略有不同:在 bash 中,如果命令返回非零状态,bash 不会打印错误消息。

从跟踪来看,你似乎正在使用哦我的zsh。它正在调用pk-command-not-found,这是 Fedora 的命令未找到处理程序,并且会打印自己的错误消息,因为它是为 bash 设计的。我没有看到一种明显的方法来抑制其中一条错误消息。如果这确实让您烦恼,您可以command-not-found从 oh-my-zsh 配置中删除该插件(在这种情况下,如果存储库中提供但未安装包含命令的包,则不会提示您安装)。

相关内容