#node.js #bash #npm #package.json
Вопрос:
Привет, я пытаюсь запустить сценарий bash из пакета.json в узле.
(Я знаю, что мог бы просто использовать node вместо bash, но я уже написал кучу кода на bash и не хочу мигрировать немедленно.) (Обратите внимание, что я нахожусь на macOS).
Внутри сценария у меня есть различные функции bash.
Я пробовал загружать с помощью различных команд (фрагмент кода package.json):
{
"scripts": {
"start": "sh ./loadScripts.sh",
"serve": "bash ./loadScripts.sh",
"serve2": "source ./loadScripts.sh",
"serve3": "./loadScripts.sh",
},
}
Однако, несмотря на то, что все они загружают сценарий, когда я пытаюсь использовать функцию внутри сценария, скажем, я пытаюсь запустить свою функцию в терминале после, тогда в нем говорится, что команда не найдена.
Однако, если я загружу скрипт непосредственно в терминал, набрав source ./loadScripts.sh
текст, он, похоже, будет работать нормально, и я смогу использовать функции, которые я определил в скрипте.
Почему это происходит и как это исправить?
Комментарии:
1. A
source ....
влияет на оболочку, в которой он выполняется (и, в отношении переменных среды, также на его дочерние процессы). Аsource ....
в оболочке внутри какой-то node.js следовательно, процесс влияет именно на эту оболочку, но не волшебным образом на ту, в которой вы находитесь.