我刚刚输入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 的及时提示:
set -x
给出了很多输出,但核心没有改变,在执行命令后没有权限。一旦我更了解它,我将复制/粘贴输出:-)- 不,我没有该
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
时,不会报告该目录,这可能会被视为错误。zsh
crash
尝试ls -ld -- $^path/crash(N/)
确认一下。
dash
,tcsh
(与which
) 并fish
有同样的问题。ksh93
并且mksh
有类似的不一致,但至少他们的错误消息更有帮助:
$ ksh -c crash
ksh: crash: cannot execute [Is a directory]
$ ksh -c 'type crash'
ksh: whence: crash: not found