Являются ли сценарии оболочки чувствительными к кодированию и окончанию строк?

Я делаю приложение NW.js на Mac и хочу запустить приложение в режиме разработки, дважды щелкнув значок. Первый шаг, я пытаюсь заставить мой скрипт работать.

Используя VSCode в Windows (я хотел выиграть время), я создалrun-nw файл в корне моего проекта, содержащий это:

#!/bin/bash

cd "src"
npm install

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

но я получаю этот вывод:

$ 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

Я действительно не понимаю

кажется, что он принимает пустые строки в качестве команд. В моем редакторе (VSCode) я попытался заменить\r\n с\n (в случае, если\r создает проблемы) но это ничего не меняет.кажется, что он не находит папки (с или безdirname инструкция), или, может быть, он не знает оcd команда?кажется, что он не понимаетinstall аргументnpmчасть, которая действительно извращает меня, - то, что это все еще управляет приложением (если я сделалnpm install вручную)...

Не имея возможности заставить его работать должным образом, и заподозрив что-то странное в самом файле, я создал новый прямо на Mac, на этот раз используя vim. Я ввел точно такие же инструкции, и ... теперь это работает без каких-либо проблем.
Разница в двух файлах показывает абсолютно нулевую разницу.

Какая может быть разница? Что может заставить первый скрипт не работать? Как я могу узнать?

Обновить

Следуя рекомендациям принятого ответа, после того, как вернулись неправильные окончания строк, я проверил несколько вещей. Оказывается, так как я скопировал мой~/.gitconfig с моей машины Windows, у меня былоautocrlf=true, поэтому каждый раз, когда я изменял bash-файл под Windows, он сбрасывал окончание строки на\r\n.
Таким образом, помимо запуска dos2unix (который вам нужно будет установить с помощью Homebrew на Mac), если вы используете Git, проверьте свою конфигурацию.

Ответы на вопрос(4)

Ваш ответ на вопрос