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

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

 

The following two tabs change content below.
Arquiteto de Software e Desenvolvedor Backend (quase Fullstack), geralmente trabalho com C#, PowerShell, Python, Golang, bash e Unity (esse é mais por hobby). Estou sempre buscando algo novo para aprender, adicionando novas ferramentas ao meu cinto de utilidades.
Posted in Conhecimento Técnico, Dev, Linux/Bash and tagged , , .