GNU/Linux >> Tutoriales Linux >  >> Linux

El script SH en $PATH no se encuentra en Linux Alpine 3.11

Su shell interactivo es dash (haciéndose pasar por sh ). El dash cáscara dice

sh: /usr/local/bin/wait-for: not found

cuando intenta ejecutar un script que tiene un #! defectuoso -línea que apunta a un intérprete que no se puede encontrar. sucede ser exactamente el mismo error que obtendrías cuando no se puede encontrar el comando que escribes, por lo que es fácil pensar que es un $PATH problema (no es en este caso). Otros shells tienen mensajes de error más informativos (bash y zsh dice "intérprete incorrecto:no existe tal archivo o directorio" y también le dice qué intérprete intentó ejecutar).

Dado que el archivo es un archivo de texto de DOS, el #! -line le indica al shell que ejecute el script con /bin/sh\r , donde \r es una representación común de un carácter de retorno de carro, que forma parte de la terminación de línea en los archivos de texto de DOS. En un sistema Unix, un retorno de carro es un "carácter ordinario" y no forma parte de la terminación de línea, lo que significa que intenta iniciar /bin/sh\r para ejecutar su secuencia de comandos, y luego falla porque ese archivo no existe. Es por tanto el intérprete eso es "no encontrado", no el script en sí.

Ejecutar el script con un explícito el intérprete pasa por alto el #! -line, siempre, por lo que no obtienes el error cuando haces eso. Sin embargo, cada línea de la secuencia de comandos todavía tendría los retornos de carro al final de ellas, lo que puede causar que la secuencia de comandos no funcione correctamente en algunas condiciones.

Simplemente vuelva a guardar el archivo como un archivo de texto Unix o conviértalo con dos2unix , resolvería su problema.


Linux
  1. ¿Hacer referencia a un archivo en el mismo directorio de un script encontrado en $ruta?

  2. dos2unix:comando no encontrado

  3. chmod:comando no encontrado

  4. mkfs:comando no encontrado

  5. archivo:comando no encontrado

nano:comando no encontrado

toque:comando no encontrado

ordenar:comando no encontrado

sed:comando no encontrado

shebang o no shebang

¿Plantillas con Linux en un script de Shell?