usr such interprete fichero existe erroneo directorio bad bash

fichero - bin bash m bad interpreter no such file or directory debian



-bash:./my_script:/bin/bash ^ M: intérprete incorrecto: no existe tal archivo o directorio (11)

Esta pregunta ya tiene una respuesta aquí:

Estoy aprendiendo a través de este tutorial para aprender scripts de bash para automatizar algunas tareas para mí. Estoy conectando a un servidor usando masilla.

El script, ubicado en .../Documents/LOG , es:

#!/bin/bash # My first script echo "Hello World!"

Y ejecuté lo siguiente para los permisos de lectura / escritura / ejecución

chmod 755 my_script

Luego, cuando ingreso a ./my_script , ./my_script el error que aparece en el título.

Algunas preguntas similares querían verlas, 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 eso no funciona ...



Ejecutar el siguiente comando en la terminal

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

Entonces intenta

./scriptname.sh

Deberia de funcionar.


El problema es con la finalización de dos líneas. Lo siguiente lo convertiremos para unix.

dos2unix file_name

NB: es posible que necesite instalar dos2unix primero con yum install dos2unix

otra forma de hacerlo es usando el comando sed para buscar y reemplazar los caracteres de finalización de la línea dos al formato Unix:

$sed -i -e ''s//r$//'' your_script.sh


En notepad ++ puede configurarlo para el archivo específicamente presionando

Editar -> Conversión EOL -> Formato UNIX / OSX


Esto se debe a la edición de archivos en Windows, a la importación y ejecución en Unix.

dos2unix -k -o filename debe hacer el truco.


He visto este problema al crear scripts en Windows env y luego pasar a ejecutarse en un entorno Unix.

Intente ejecutar dos2unix en el script:

http://dos2unix.sourceforge.net/

O simplemente reescriba el script en su env de Unix usando vi y pruebe.

Unix usa diferentes finales de línea, por lo que no puede leer el archivo que creó en Windows. Por lo tanto, está viendo a M como un personaje ilegal.

Si desea escribir un archivo en Windows y luego transferir el puerto, asegúrese de que su editor esté configurado para crear archivos en formato UNIX.

En notepad ++ en la parte inferior derecha de la pantalla, le indica el formato del documento. Por defecto, dirá Dos/Windows . Para cambiarlo ve a

  • ajustes-> preferencias
  • Nuevo documento / pestaña de directorio por defecto
  • Selecciona el formato como Unix y cierra.
  • crear un nuevo documento

Me desarrollo en Windows y Mac / Linux al mismo tiempo y evito este ^ M-error simplemente ejecutando mis scripts como lo hago en Windows:

$ php ./my_script

No hay necesidad de cambiar los finales de línea.


Para los usuarios de Eclipse , puede cambiar la codificación del archivo directamente desde el menú File > Convert Line Delimiters To > Unix (LF, /n, 0Α, ¶) :

O cambie el New text file line delimiter a Other: Unix en Window > Preferences > General > Workspace Panel de área de Window > Preferences > General > Workspace :


Pude resolver el problema abriendo el script en Gedit y guardándolo con la opción de Line Ending adecuada:

Archivo> Guardar como ...

En la parte inferior izquierda del mensaje Save As , hay menús desplegables para codificación de caracteres y final de línea. Cambie la línea de terminación de Windows a Unix/Linux luego Guardar.


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

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


Su archivo tiene finales de línea de Windows, lo que confunde a Linux.

Eliminar los caracteres espurios CR. Puedes hacerlo con el siguiente comando:

$ sed -i -e ''s//r$//'' setup.sh