Как запустить команду NVM из скрипта bash

Я хочу запустить NVM команда из скрипта bash т.е. nvm use 0.12.7, Итак, я написал в файле Bash:

#!/bin/bash
. ~/.nvm/nvm.sh
nvm use 0.12.7

А затем запустите команду в терминале как sudo ./script.sh (script.sh - мой bash-файл, в котором написан вышеуказанный код). Это дает мне результат Now using node v0.12.7, Но когда я проверял, была ли активирована версия или нет, я не нашел никакого влияния. т.е. я управлял командой nvm ls и нашел результат как:

v0.12.0
v0.12.7

Это средняя версия 0.12.7 не был активирован. Итак, какие вещи я должен написать в скрипте bash, как я могу активную версию узла из файла bash.

1 ответ

Решение

Одно из преимуществ nvm это то, что вам не нужно использовать sudo установить версии или перейти на другую версию. Я не уверен, почему вы используете sudo в вашем nvm команда.

Проблема, как уже говорили другие, заключается в том, что версия изменяется в под-оболочке. Так что версия в вашей "настоящей" оболочке не изменилась.

Вы можете сделать это, запустив ваш скрипт с . (точка) перед ним. Это сделает скрипт способным что-то менять в вашей текущей оболочке.

Это мое ~/bin/nvm-use-4 сценарий:

. /usr/local/opt/nvm/nvm.sh
nvm use 4

И используя это:

prawie:~$ nvm current
v0.10.29
prawie:~$ . nvm-use-4
Now using node v4.2.1
prawie:~$ nvm current
v4.2.1

Если вы вынуждены использовать sudo здесь, я не думаю, что можно выполнить то, что вы хотите, потому что команда sudo'ed запускается в под-оболочке.

К сожалению, вы не сказали использовать, почему вы хотите это сделать или что вы хотите достичь. Там могут быть лучшие решения для решения вашей проблемы. Например, если вы хотите всегда использовать определенную версию node.js когда вы открываете новую оболочку, вы можете добавить следующую строку в .profile, .bashrc или эквивалентный файл:

nvm use 0.12.7
Другие вопросы по тегам