Script Bash: "/bin/bash^M: intérprete incorrecto: no existe tal archivo o directorio" [duplicado]
Estoy usando este tutorial para aprender scripts de bash para automatizar algunas tareas.
Me estoy conectando a un servidor usando PuTTY.
El script, ubicado en .../Documents/LOG
, es:
#!/bin/bash
# My first script
echo "Hello World!"
Y ejecuté lo siguiente pararead/write/execute permissions
chmod 755 my_script
Luego, cuando entro ./my_script
, aparece el error que aparece en el título.
Algunas preguntas similares querían ver estas, así que creo que podrían ayudar:
$ which bash
/bin/bash
y
$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/bin/mh
Intenté agregar el directorio actual a PATH
, pero no funciona...
La razón podría ser que guardó el archivo en Windows, con CR
LF
la línea que termina ( \r\n
).
Ejecute el siguiente comando en su terminal:
sed -i -e 's/\r$//' scriptname.sh
(Por supuesto, cambie scriptname.sh
a su nombre de archivo)
El comando reemplazará esos CR
caracteres con nada, lo que dejará estas líneas con LF
( \n
) como final, y Bash podrá leer y ejecutar el archivo ejecutando
./scriptname.sh
He visto este problema al crear scripts en un entorno de Windows y luego transferirlos para ejecutarlos en un entorno Unix.
Intente ejecutar dos2unix
el script:
http://dos2unix.sourceforge.net/
O simplemente reescriba el script en su entorno Unix usando vi
y probando.
Unix usa diferentes finales de línea, por lo que no puede leer el archivo que creó en Windows. Por lo tanto, considera ^M un carácter ilegal.
Si desea escribir un archivo en Windows y luego transferirlo, asegúrese de que su editor esté configurado para crear archivos en formato UNIX.
En notepad++, en la parte inferior derecha de la pantalla, te indica el formato del documento. Por defecto dirá Dos\Windows
. Para cambiarlo ve a
- configuración->preferencias
- nuevo documento/pestaña de directorio predeterminado
- seleccione el formato como unix y cierre
- crear un nuevo documento
Si usa Sublime Text en Windows o Mac para editar sus scripts:
Haga clic en View > Line Endings > Unix
y guarde el archivo nuevamente.