Qual é o significado do valor de retorno 127 de $? no UNIX.
291
O valor 127 é retornado /bin/sh
quando o comando fornecido não é encontrado na PATH
variável do sistema e não é um comando shell interno. Em outras palavras, o sistema não entende seu comando, porque não sabe onde encontrar o binário que você está tentando chamar.
which [program]
para ver qual binário o sistema operacional está usando. Se aparecer vazio, o próximo passo é verificar o bit de execução e o PATH.which
não é particularmente preciso - não conhece aliases, funções de shell, memorização de pesquisa PATH ou outros fatores internos ao estado do shell. Muito melhor para usartype
, um shell embutido que sabe sobre todas essas coisas.126
(Permission denied
), não127
quando tento invocar um arquivo não executável (independentemente de seu conteúdo); Da mesma forma, uma tentativa de executar um diretório também resulta em126
(is a directory
).Geralmente significa:
127 - comando não encontrado
mas também pode significar que o comando foi encontrado ,
mas uma biblioteca requerida pelo comando NÃO foi encontrada .
fonte
127 - command not found
exemplo: $ caat A mensagem de erro será
bash:
agora você verifica usando
echo $?
fonte
Uma convenção de shell é que um executável bem-sucedido deve sair com o valor 0. Qualquer outra coisa pode ser interpretada como uma falha de algum tipo, em parte do bash ou no executável que você acabou de executar. Consulte também $ PIPESTATUS e a seção EXIT STATUS da página do manual do bash:
fonte
Não tem um significado especial, exceto que o último processo a sair o fez com um status de saída 127.
No entanto, também é usado pelo bash (assumindo que você esteja usando o bash como um shell) para informar que o comando que você tentou executar não pôde ser executado (ou seja, não foi encontrado). Infelizmente, não é imediatamente dedutível, se o processo saiu com o status 127 ou se não foi encontrado.
EDIT:
Não é dedutível imediatamente, exceto pela saída no console, mas isso está excedendo a pilha, então suponho que você esteja fazendo isso em um script.
fonte
Este erro também às vezes engana. Ele diz que o arquivo não foi encontrado, embora os arquivos estejam realmente presentes. Pode ser por causa de caracteres especiais ilegíveis inválidos presentes nos arquivos que podem ser causados pelo editor que você está usando. Esse link pode ajudá-lo nesses casos.
-bash: ./my_script: / bin / bash ^ M: intérprete incorreto: esse arquivo ou diretório não existe
A melhor maneira de descobrir se é esse problema é simplesmente colocar uma instrução de eco no arquivo inteiro e verificar se o mesmo erro foi gerado.
fonte
Se você estiver tentando executar um programa usando uma linguagem de script, pode ser necessário incluir o caminho completo da linguagem de script e o arquivo a ser executado. Por exemplo:
fonte
Se a JCL do mainframe IBM tiver alguns caracteres ou números extras no final do nome do script unix que está sendo chamado, poderá gerar esse erro.
fonte