命令未找到未因 ZSH 中的“崩溃”而无故触发

命令未找到未因 ZSH 中的“崩溃”而无故触发

我刚刚输入crash了我的 ZSH(如果重要的话,来自 oh-my-zsh),我得到了奇怪的答案:

zsh: permission denied: crash

而不是通常预期的命令未找到行为(因为我安装了该插件)。

请帮助我理解原因或指出我可以调试此问题的位置。其他词不会触发任何此类消息,这是通常的命令未找到行为。type crash状态crash not found

➜  ~ crash
zsh: permission denied: crash
➜  ~ type crash
crash not found
➜  ~ type crashaa
crashaa not found
➜  ~ type crsdadsadsa
crsdadsadsa not found
➜  ~ ieusrferw
zsh: command not found: ieusrferw
➜  ~ crashaa
zsh: command not found: crashaa
➜  ~ crash
zsh: permission denied: crash

好奇心战胜了我:sudo crash报告sudo: crash: command not found。 :P

感谢@Gilles 和@StéphaneChavelaz 的及时提示:

  1. set -x给出了很多输出,但核心没有改变,在执行命令后没有权限。一旦我更了解它,我将复制/粘贴输出:-)
  2. 不,我没有该crash目录,我什至创建了一个临时aaa目录并在那里重复了一些事情,没有任何变化。我也不记得走上crash哪条路了。另外, sudo 没有帮助,它显示“没有这样的命令”。

答案1

crash如果我创建一个在以下任何目录中调用的目录,我可以重现它$path

$ mkdir -p ~/bin/crash
$ path+=(~/bin)
$ crash
zsh: permission denied: crash
$ type crasn
crasn not found

permission denied是因为zsh尝试执行该目录(并且在其余部分中没有其他crash潜在的命令可供查找$path)。现在,当您输入时尝试执行该目录type时,不会报告该目录,这可能会被视为错误。zshcrash

尝试ls -ld -- $^path/crash(N/)确认一下。

dashtcsh(与which) 并fish有同样的问题。ksh93并且mksh有类似的不一致,但至少他们的错误消息更有帮助:

$ ksh -c crash
ksh: crash: cannot execute [Is a directory]
$ ksh -c 'type crash'
ksh: whence: crash: not found

相关内容