Você provavelmente tem um retorno de carro ( ^M ) no final da sua linha #! .
O formato da linha #! é muito rigoroso, e o retorno de carro não é permitido, a menos que seu interpretador seja chamado de /bin/bash^M
Nunca haverá retornos de carro em um arquivo criado com um editor unix adequado, a menos que você faça o possível para adicioná-los.
Ao editar um arquivo existente que já usa finais de linha CRLF, as retornos de carro podem estar ocultos de você. Por exemplo, o vim faz isso. Mas também diz [dos] na linha de status para avisá-lo que o arquivo está no formato DOS. Você pode então dizer :set fileformat=unix e salvar o arquivo para convertê-lo.