Seu script de shell está no formato de texto DOS / Windows (com CR + LF). Converta-o para o formato Unix (por exemplo, use dos2unix).
Isso não funcionará como você deseja, como explicado na pergunta vinculada. Um novo shell é executado, a variável é definida e, em seguida, o shell é finalizado, levando a variável com ele.
Se você tiver um script que usa o mesmo shell que o que você está executando (ou possui sintaxe compatível), você poderá executar o script usando .
ou source
. Desta forma, o script é executado como se você tivesse digitado tudo em si mesmo, então todas as variáveis permanecem (e ele irá ignorar a linha #!).