Isso ^ M é uma oferta inoperante - parece que o script tem finais de linha do Mac (Ctrl-M) em vez de terminações de linha do Unix (Ctrl-J).
Ele não aparecerá como um literal ^ M - na verdade, dependendo do seu editor de texto, ele pode não ser exibido.
Você não diz qual sistema operacional você tem, então não tenho certeza de quais ferramentas você tem em seu sistema, mas você poderia tentar obter um dump de caractere (não hexadecimal) com:
od -tc newshit.sh
... e diga-nos se o / bin / sh é seguido por \ r, \ n ou \ r \ n?
Espero que você veja algo como:
0000000 # ! / b i n / s h \r
Ou se você executar:
cat -e newshit.sh
... que exibirá o caractere de retorno de carro se estiver lá.