Предположение:У меня сложилось впечатление, что как только вы попытались установить Node и NPM, вы пытаетесь выполнить их, не зная фактического пути к ним в скрипте. Это то, на чем я основываю свой ответ.
Вызывающий узел и NPM:
Эта строка должна помочь:
$(which <command>) <command arguments>
Таким образом, для некоторых пакетов NPM вы можете использовать:
$(which npm) install <packagename>
Это связано с тем, что полный путь к исполняемому файлу (, если он указан перед чем-либо еще в bash ), является тем, что он собирается выполнить. Конструкция "$ ()" буквально заменит этот исполняемый файл в bash.
Пример:
$(which yes) IT WORKS!
Который распечатает "ЭТО РАБОТАЕТ!" на экране несколько раз, пока не будет прервано.
Как отмечалось в комментариях, если вы знаете, куда будут установлены Node и NPM, вы можете просто использовать их полные пути для их выполнения (, хотя см. примечание, чтобы узнать, как это сделать лучше ).
(Если вам нужно установить ruby, вы сами по себе, хотя я думаю, что вы просто сделаете что-то похожее на эту строку "curl" ).
ПРИМЕЧАНИЕ.:У вас уже есть «/usr/local/bin» и «/usr/bin» в переменной $PATH вашего скрипта, поэтому, если у вас не происходит чего-то шаткого, вы можете запустить «ruby» и "варить" без указания их полных путей.