[Resolvido] Erro: /bin/bash^M: bad interpreter: No such file or directory (Linux)

[Resolvido] Erro: /bin/bash^M: bad interpreter: No such file or directory (Linux)

Overview

Já se deparou com um erro ao tentar executar um script do Windows no Linux? Neste post, vamos mergulhar de cabeça (mas de forma leve e descontraída) na solução desse problema comum, mas muitas vezes confuso. Vou te mostrar como uma simples linha de comando pode ser a chave mestra para resolver a inconveniência do ‘/bin/bash^M: bad interpreter: No such file or directory’. Preparado? Vamos nessa!

Utilizando seu Windows, você fez um script mágico para resolver algum problema, mas quando foi executa-lo no Linux, foi agraciado com o erro: /bin/bash^M: bad interpreter: No such file or directory. Neste posto, mostro como resolver este problema sem muito esforço.

O problema ocorre devido as diferenças no registro da quebra de linha feito pelo Windows e pelo Linux. Para resolver, vamos utilizar uma expressão regular e o comando SED:

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

Explicando rapidamente o que este comando faz:

  • sed: nome do programa que estamos utilizando (sed = Stream Editor);
  • -e <expressão regular>: Adiciona um comando a ser executado no script. Pode ser utilizado varias vezes, para adicionar multiplos comandos;
  • -i: Salva as alterações do arquivo. Gera um backup automatico se você fornecer uma extensão;
  • “s/\r$//”: Remove os caracteres de Carriage Return (\r) que estão no arquivo, deixando apenas os Line Feed (\n). O que vai resolver o problema.

Espero ter ajudado. 🙂