В Пример проекта Firefly в package.json есть
"start": "sh -ac '. ./.env.dev; firebase use dev && react-scripts start'",
В моей Windows 10 он не работает с &&:
Now using alias dev (firefly-boilerplate) Unknown script "start'". react-scripts start'
Этот скрипт работает с ; вместо &&, приложение запускается, но не подключается к базе данных:
@firebase/firestore: Firestore (5.0.4): Could not reach Cloud Firestore backend. Connection failed 2 times. Most recent error: FirebaseError: [code=not-found]: The project firefly-boilerplate
does not exist or it does not contain an active Cloud Datastore database.
Поэтому я должен поместить ключ Api, домен и имя проекта из .env.dev в index.js, чтобы работать. Почему этот скрипт не работает с &&?
Что именно делает команда sh -ac?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


sh - это команда POSIX для запуска оболочки (оболочка - это программа, которая запускает терминал командной строки). Запуск sh -ac означает «эффективно запустить команду оболочки и автоматически экспортировать все переменные, назначенные во время ее выполнения».
Файл .env часто используется для описания локальных переменных среды, необходимых для запуска скриптов, поэтому sh -ac ./.env.dev в основном говорит загрузить все переменные среды из .env.dev.
Затем эти переменные среды становятся доступными в последующих командах через &&, который выполняет несколько команд в одном контексте.
Этот сценарий, попросту говоря, не очень дружелюбен к Windows. Что вам нужно сделать, так это заглянуть внутрь .env.dev на переменные среды, которые он устанавливает, а затем установить их в своем локальном терминале перед запуском команд firebase и react-scripts.