[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)](/imgs/featured_image_default.png)
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. 🙂