Solución error: /bin/bash^M: bad interpreter

1 minuto de lectura

En el caso de ejecutar un script y recibir el error “bad interpreter” deberemos acceder a este para revisar el shebang.

El chebang es la línea del fichero que cuenta con una almohadilla y una admiración (#!) que indica al sistema que interprete debe utiliza para instrucciones como las que pongo a continuación.

En el caso de tener:

#!/bin/bash

Las instrucciones del script serán interpretadas por el bash.

Si aparece:

#!/usr/bin/perl

El sistema escogerá /usr/bin/perl como interprete.

Además, podemos usar el shebang para pasar opciones al intérprete, por ejemplo con:

#!/usr/bin/perl -w

En este caso habilitaremos los warnings del intérprete de perl.

Sintomas

Cuando intentamos ejecutar un script en nuestro terminal recibimos el siguiente error:

./nombrescript.sh
-bash: ./parser.sh: /bin/bash^M: bad interpreter: No such file or directory

“/bin/bash^M”, nos indica que tenemos los intros de DOS (Windows) posiblemente por haber sido editado con dicho sistema operativo.

Solución

Para corregirlo simplemente deberemos usar la utilidad dos2unix de la siguiente forma:

dos2unix nombrescript.sh
dos2unix: converting file parser.sh to UNIX format ...

Si no tenemos instalada la herramienta podemos instalarla ejecutando el siguiente comando:

apt-get install dos2unix

A continuación si ejecutamos el script funcionara de forma correcta:

./nombrescript.sh
FUNCIONA
3.7/5 - (12 votos)
Diego García Cuesta: Técnico superior en administración de sistemas informáticos y redes. Autodidacta, amante de la tecnología y el deporte. En mis tiempos libres investigo sobre los últimos avances tecnológicos.
Related Post