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.