¿Cuál es el significado del valor de retorno 127 de $? en UNIX
291
El valor 127 se devuelve /bin/sh
cuando el comando dado no se encuentra dentro de la PATH
variable del sistema y no es un comando de shell incorporado. En otras palabras, el sistema no entiende su comando, porque no sabe dónde encontrar el binario al que está intentando llamar.
which [program]
para ver qué binario está usando el sistema operativo. Si aparece vacío, el siguiente paso es verificar el bit de ejecución y la RUTA.which
no es particularmente preciso: no sabe sobre alias, funciones de shell, memoria de búsqueda de RUTA u otros factores internos del estado de shell. Mucho mejor de usartype
, un shell incorporado que conoce todas esas cosas.126
(Permission denied
), no127
cuando intento invocar un archivo no ejecutable (independientemente de su contenido); Del mismo modo, un intento de ejecutar un directorio también da como resultado126
(is a directory
).Generalmente significa:
127 - comando no encontrado
pero también puede significar que se encuentra el comando ,
pero NO se encuentra una biblioteca requerida por el comando .
fuente
127 - command not found
ejemplo: $ caat El mensaje de error aparecerá
intento:
ahora revisas usando
echo $?
fuente
Una convención de shell es que un ejecutable exitoso debe salir con el valor 0. Cualquier otra cosa puede interpretarse como una falla de algún tipo, por parte de bash o el ejecutable que acaba de ejecutar. Consulte también $ PIPESTATUS y la sección EXIT STATUS de la página de manual de bash:
fuente
No tiene un significado especial, aparte de que el último proceso para salir lo hizo con un estado de salida de 127.
Sin embargo, también lo usa bash (suponiendo que esté usando bash como shell) para decirle que el comando que intentó ejecutar no se pudo ejecutar (es decir, no se pudo encontrar). Sin embargo, lamentablemente no es deducible de inmediato si el proceso salió con el estado 127 o si no se pudo encontrar.
EDITAR:
no es deducible de inmediato, excepto por la salida en la consola, pero esto es desbordamiento de pila, por lo que supongo que está haciendo esto en un script.
fuente
Este error también es a veces engañoso. Dice que el archivo no se encuentra a pesar de que los archivos están realmente presentes. Podría deberse a caracteres especiales ilegibles no válidos presentes en los archivos que podrían ser causados por el editor que está utilizando. Este enlace puede ayudarlo en tales casos.
-bash: ./my_script: / bin / bash ^ M: mal intérprete: No existe tal archivo o directorio
La mejor manera de averiguar si se trata de este problema es simplemente colocar una declaración de eco en todo el archivo y verificar si se produce el mismo error.
fuente
Si está intentando ejecutar un programa utilizando un lenguaje de script, es posible que deba incluir la ruta completa del lenguaje de script y el archivo a ejecutar. Por ejemplo:
fuente
Si el JCL de mainframe de IBM tiene algunos caracteres o números adicionales al final del nombre del script de Unix que se está llamando, entonces puede arrojar dicho error.
fuente