Script Bash: "/bin/bash^M: intérprete incorrecto: no existe tal archivo o directorio" [duplicado]

Resuelto cartonn asked hace 11 años • 11 respuestas

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...

cartonn avatar Jan 08 '13 23:01 cartonn
Aceptado

La razón podría ser que guardó el archivo en Windows, con CR LFla línea que termina ( \r\n).

Ejecute el siguiente comando en su terminal:

sed -i -e 's/\r$//' scriptname.sh

(Por supuesto, cambie scriptname.sha su nombre de archivo)

El comando reemplazará esos CRcaracteres con nada, lo que dejará estas líneas con LF( \n) como final, y Bash podrá leer y ejecutar el archivo ejecutando

./scriptname.sh
Nivin V Joseph avatar Apr 20 '2015 12:04 Nivin V Joseph

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 viy 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
cowls avatar Jan 08 '2013 16:01 cowls

Si usa Sublime Text en Windows o Mac para editar sus scripts:

Haga clic en View > Line Endings > Unixy guarde el archivo nuevamente.

ingrese la descripción de la imagen aquí

Mario Campa avatar Apr 21 '2014 17:04 Mario Campa