Resolvendo 'bad interpreter' no Bash

bad interpreter: No such file or directory


Resolvendo "bad interpreter" no Bash

Ao executar um script que você pegou ou baixou da internet, muitas vezes foi um script criado num Windows , ou baixou do PasteBin, e ao executá-lo, você recebe a seguinte mensagem:

./script.sh
bad interpreter: No such file or directory
cat script.sh
#!/bin/bash
echo "oi"
  • Hein? Mas está tudo certo, eu tenho um /bin/bash, o que está acontecendo?

Bom, vamos ver mais de perto

cat -v script.sh # 'show nonprinting'
#!/bin/bash^M
echo "oi"^M

Ahá! Tem um ^M no final das linhas atrapalhando.

  • Mas o que é isso?

Muito provavelmente a origem desde script é uma maquina windows. A explicação é o caracter newline. O windows precisa de 2 caracteres para simbolizar o fim de uma linha em um arquivo texto puro, a dupla \r\n , porém os *nix não precisam do \r que o cat gentilmente mostrou como um ^M . Este caracter a mais atrapalha o interpretador, que não recebe um /bin/bash e sim /bin/bash\r e isso realmente não existe.

Como resolver? Existem dois programas para este fim: unix2dos e dos2unix (as vezes aparecem como unixtodos e dostounix) que convertem os finais de linha em casos como este. Se vc abrir um arquivo texto do *nix em um bloco de texto vai ver todas as quebras de linha substituidas por um quadrado preto e todas as linhas em uma só.

Caso vc não tenha um programa conversor, pode usar o SED

sed -i 's/\r$//' script.sh
./script.sh
oi

O tr também poderia ser usado, mas não é tão amigável.

tr -d '\r' < script.sh > novo_script.sh

Fonte: http://peczenyj.blogspot.com.br/2007/07/resolvendo-problemas-comuns-2-bad.html


shellscript dicas


Compartilhe


Nosso canal no Youtube

Inscreva-se


Marcos Oliveira

Marcos Oliveira

Desenvolvedor de software
https://github.com/terroo


Crie Aplicativos Gráficos para Linux e Windows com C++

Aprenda C++ Moderno e crie Games, Programas CLI, GUI e TUI de forma fácil.

Saiba Mais

Receba as novidades no seu e-mail!

Após cadastro e confirmação do e-mail, enviaremos semanalmente resumos e também sempre que houver novidades por aqui para que você mantenha-se atualizado!