Команда nvm недоступна в скрипте bash

Я пытаюсь создать скрипт, в котором nvm, и в конечном итоге узел будет установлен.
Я установил nvm с помощью cURL. Я вижу изменения в .profile или .bashrc (оба работают) и при вводе кода nvm в командной строке bash, он показывает доступные параметры и т. д.
Так работает nvm. Вручную я могу установить узел, но как только я поместил команду nvm в сценарий оболочки:

nano test.sh

#!/bin/bash
nvm

и запустите его с помощью

chmod 755 test.sh
./test.sh

Я получаю:

./test.sh: line 2: nvm: command not found

Если он не может найти nvm, мне даже не нужно думать о

nvm ls-remote 

или

nvm install ...

У меня установлен Ubuntu 14.04, а Bash - моя оболочка.

28 голосов | спросил okidoki 12 FebruaryEurope/MoscowbThu, 12 Feb 2015 20:12:32 +0300000000pmThu, 12 Feb 2015 20:12:32 +030015 2015, 20:12:32

4 ответа


49

nvm команда - это функция оболочки, объявленная в ~/.nvm/nvm.sh.

Вы можете использовать любой из следующих сценариев в начале своей версии, чтобы сделать доступным nvm():

. ~/.nvm/nvm.sh
. ~/.profile
. ~/.bashrc
. $(brew --prefix nvm)/nvm.sh  # if installed via Brew
ответил webKnjaZ 12 FebruaryEurope/MoscowbThu, 12 Feb 2015 20:31:45 +0300000000pmThu, 12 Feb 2015 20:31:45 +030015 2015, 20:31:45
1

Если вы установили его с помощью пивоварения на OSX, вы можете загрузить сценарий с запатентованным сценарием в скрипт env, используя его, как он детализирует установку.

У меня есть это в проектах, чтобы загрузить их:

brew install nvm
. $(brew --prefix nvm)/nvm.sh
nvm install
...
ответил IanVaughan 10 Maypm16 2016, 16:22:17
0

Малая выноска в верхней части ответа, предоставленного @webKnjaZ: Мне приходилось запускать функцию оболочки для каждой команды, чтобы она работала в моем сценарии bash. Что-то вроде этого:

. ~/.nvm/nvm.sh --version
. ~/.nvm/nvm.sh install 4.4.5
ответил rahulthakur319 20 MarpmMon, 20 Mar 2017 15:36:06 +03002017-03-20T15:36:06+03:0003 2017, 15:36:06
0

То же самое случилось ниже - это то, что сработало для меня:

root @ ubuntu: /usr /src /playground # n = $ (какой узел); n = $ {n% /bin /node}; chmod -R 755 $ n /bin /*; sudo cp -r $ n /{bin, lib, share} /usr /local

root @ ubuntu: /usr /src /playground # sudo npm install express '/usr/src/playground/package.json' + [email protected] добавлено 49 пакетов в 129.186s

Вышеупомянутая команда немного сложна, но все, что она делает, это копирование любой версии узла, который вы активировали через nvm, в каталог /usr /local /(где пользователь установил глобальные файлы, должен жить на VPS Linux) и установить разрешений, чтобы все пользователи могли получить к ним доступ.

ответил ABHISHEK SHARMA 4 FebruaryEurope/MoscowbSun, 04 Feb 2018 14:59:51 +0300000000pmSun, 04 Feb 2018 14:59:51 +030018 2018, 14:59:51

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132