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:
Bom, vamos ver mais de perto
Ahá! Tem um ^M no final das linhas atrapalhando.
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
O tr também poderia ser usado, mas não é tão amigável.
Fonte: http://peczenyj.blogspot.com.br/2007/07/resolvendo-problemas-comuns-2-bad.html