Os scripts de shell são sensíveis à codificação e às terminações de linha?

Estou criando um aplicativo NW.js. no Mac e quero executá-lo no modo dev clicando duas vezes em um ícone. Primeiro passo, estou tentando fazer meu script de shell funcionar.

Usando o VSCode no Windows (eu queria ganhar tempo), criei umrun-nw arquivo na raiz do meu projeto, contendo este:

#!/bin/bash

cd "src"
npm install

cd ..
./tools/nwjs-sdk-v0.17.3-osx-x64/nwjs.app/Contents/MacOS/nwjs "src" &

mas eu recebo esta saída:

$ sh ./run-nw

: command not found  
: No such file or directory  
: command not found  
: No such file or directory  

Usage: npm <command>

where <command> is one of:  (snip commands list)

(snip npm help)

[email protected] /usr/local/lib/node_modules/npm  
: command not found  
: No such file or directory  
: command not found

Eu realmente não entendo:

parece que leva linhas vazias como comandos. No meu editor (VSCode), tentei substituir\r\n com\n (caso o\r cria problemas), mas nada muda.parece que não encontra as pastas (com ou sem odirname instruções) ou talvez não conheça ocd comando?parece que não entende oinstall argumento paranpma parte que realmente me impressiona é que ele ainda executa o aplicativo (se eu fizesse umnpm install manualmente) ...

Não consegui fazê-lo funcionar corretamente e, suspeitando de algo estranho com o próprio arquivo, criei um novo diretamente no Mac, usando o vim desta vez. Digitei exatamente as mesmas instruções e ... agora funciona sem nenhum problema.
Uma diferença nos dois arquivos revela exatamente zero diferença.

Qual pode ser a diferença? O que pode fazer o primeiro script não funcionar? Como posso descobrir?

Atualizar

Seguindo as recomendações da resposta aceita, depois que as terminações de linhas erradas voltaram, verifiquei várias coisas. Acontece que desde que eu copiei meu~/.gitconfig da minha máquina Windows, eu tinhaautocrlf=true, portanto, toda vez que modifiquei o arquivo bash no Windows, ele redefiniu as terminações da linha como\r\n.
Portanto, além de executar o dos2unix (que você precisará instalar usando o Homebrew no mac), se estiver usando o Git, verifique sua configuração.

questionAnswers(4)

yourAnswerToTheQuestion