запуск скрипта bash с узлом, содержащим функции в скрипте

#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 следовательно, процесс влияет именно на эту оболочку, но не волшебным образом на ту, в которой вы находитесь.