Comando não encontrado não acionado para 'travar' no ZSH sem motivo

3

Acabei de digitar crash no meu ZSH (de oh-my-zsh se isso importa) e recebi uma resposta peculiar:

zsh: permission denied: crash

em vez do usual comportamento de comando não encontrado esperado (desde que eu tenha esse plugin instalado).

Por favor me ajude a entender por que ou me aponte onde posso depurar isso. Outras palavras não acionam nenhuma mensagem desse tipo, é o comportamento usual não encontrado. type crash states 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

A curiosidade tirou o melhor de mim: sudo crash reports sudo: crash: command not found . : P

Obrigado @Gilles e @ StéphaneChavelaz, por sugestões imediatas:

  1. set -x deu muita saída, mas o núcleo não mudou, logo após o comando ser executado, não há permissão. Vou copiar / colar a saída uma vez que entendi um pouco mais: -)
  2. Não, eu não tenho o diretório crash , até criei um temp aaa dir e repeti coisas lá, sem alteração. Nem me lembro de definir crash no caminho. Além disso, o sudo não ajuda, bem, mostra "nenhum tal comando".
por LIttle Ancient Forest Kami 03.03.2017 / 00:26

1 resposta

3

Eu posso reproduzi-lo se eu criar um diretório chamado crash em qualquer um dos diretórios em $path :

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

O permission denied seria porque zsh tenta executar esse diretório (e não há outro comando crash potential para procurar no restante de $path ). Agora que type não reporta esse diretório quando zsh tenta executá-lo quando você digita crash pode ser visto como um bug.

Tente ls -ld -- $^path/crash(N/) para confirmar.

dash , tcsh (com which ) e fish têm o mesmo problema. ksh93 e mksh têm uma inconsistência semelhante, mas pelo menos a mensagem de erro é mais útil:

$ ksh -c crash
ksh: crash: cannot execute [Is a directory]
$ ksh -c 'type crash'
ksh: whence: crash: not found
    
por 03.03.2017 / 00:42