Introducción
Ayer estaba haciendo un script sh para Linux. Para ello utilicé Sublime Text 3 pero cuál fue mi sorpresa al ver que salía un error que dice /bin/bash^M bad interpreter: No such file or directory. Es por ello que hoy veremos la solución a bad interpreter no such file or directory
Solución a bad interpreter No such file or directory
Este post explica la solución a cuando editas el archivo desde Windows y se ponen los caracteres de terminación de línea del mismo.
Sin embargo, puede que realmente no exista el intérprete. Para ello verifica que el intérprete que pones (por ejemplo /bin/bash o /bin/sh) exista; puedes comprobarlo con el comando:
whereis sh
O con bash, como sea. Si no marca ningún error entonces sigue leyendo.
Terminación de línea de Windows
Otra vez Windows viene a no ser compatible con Linux. En este caso es por el salto de línea, ya que creo que Windows utiliza \r\n y Linux sólo \n
Para solucionarlo sin Sublime Text puedes ejecutar este comando en Linux:
sed -i -e 's/\r$//' tu_script.sh
En caso de que sí uses Sublime Text o lo tengas a la mano, abre el script. Luego ve al menú View > Line Endings > y selecciona Unix.
Finalmente guarda el archivo con Ctrl + S
Ahora ya no deberías tener problemas para ejecutar el script.
Referencias
Lo expuesto aquí fue consultado en:
https://askubuntu.com/questions/304999/not-able-to-execute-a-sh-file-bin-bashm-bad-interpreter