By Marcos Oliveira,

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



Sobre o Autor

Marcos Oliveira

A alegria está na luta, na tentativa, no sofrimento envolvido e não na vitória propriamente dita. A força não provém da capacidade física. Provém de uma vontade indomável.
Mahatma Gandhi


Dê você também uma Contribuição
Compartilhe nas suas Redes Sociais!




Inscreva-se no Nosso Canal do Youtube



Curso Extremamente Avançado em Shell Script Bash

Você irá descobrir técnicas avançadas de escrever em Shell Script. Como criar instaladores para distribuições Linux, Animações, Documentações, além de tudo sobre Processos em sistemas tipo UNIX, detalhes sobre Comandos Avançados e Muito Mais !




Crie Sua Própria Promoção

Customize seus Pacotes de Treinamentos obtendo descontos muito em conta!