Komenda nvm nie jest dostępna w skrypcie bash


39

Próbuję zbudować skrypt, w którym nvmi ostatecznie zostanie zainstalowany węzeł.
Zainstalowałem nvmz cURL. Widzę zmiany w pliku .profilelub .bashrc(oba działają), a podczas wpisywania nvmw wierszu poleceń bash pokazuje dostępne opcje itp.
Więc NVM działa. Ręcznie mogę zainstalować węzeł, ale jak tylko wstawię nvmpolecenie do skryptu powłoki:

nano test.sh

#!/bin/bash
nvm

i uruchom go z:

chmod 755 test.sh
./test.sh

Dostaję:

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

Jeśli nie można go znaleźć nvm, nawet nie muszę o tym myśleć

nvm ls-remote 

lub

nvm install ...

Mam zainstalowany Ubuntu 14.04 i Bash jest moją powłoką.


Przed wywołaniem nvm wydrukowałbym ścieżkę w skrypcie i sprawdził, czy jest poprawna.
AProgrammer

Odpowiedzi:


69

nvmpolecenie jest funkcją powłoki zadeklarowaną w ~/.nvm/nvm.sh.

Na początku możesz nvm()pobrać jeden z poniższych skryptów, aby go udostępnić:

. ~/.nvm/nvm.sh
. ~/.profile
. ~/.bashrc
. $(brew --prefix nvm)/nvm.sh  # if installed via Brew

Cześć, dzięki. Ma to sens wtedy, gdy nvm jest „zainstalowany” w ~ / .nvm. I prawdopodobnie jest to po prostu skrypt powłoki. Brakuje mi jednak możliwości wpisania nvm i uruchomienia go, ale przy próbie skryptów powłoki w ~ / .nvm nie działa.
okidoki

co masz na myśli trying the shell scripts in ~/.nvm? Wyjaśniłem, jak uruchomić nvmze skryptu powłoki powyżej. Czy jest coś niejasnego?
webKnjaZ

Aby rozwinąć mój ostatni komentarz. kiedy „sudo find / -iname nvm *” znajduję tylko rzeczy w moim folderze ~ / .nvm. Wykonywanie ~ / .nvm / nvm-exec lub ~ / .nvm / nvm.sh (jedyne pliki w ~ / .nvm, które okazują się być skryptami powłoki) nie daje mi nvm, jak po prostu wpisanie „nvm” na wiersz poleceń. Gdzie więc jest związek między nvm a programem.
okidoki

Och .. Chyba nvmjest aliasw twoim środowisku powłoki. Proszę opublikować wynik, which nvma to wszystko wyczyści.
webKnjaZ

2
Zainstalowałem nvmlokalnie i przeprowadziłem badania. nvmjest zadeklarowaną funkcją powłoki nvm.sh, więc w zasadzie musisz ją po prostu . ~/.nvm/nvm.sh.profile.bashrc
pobrać

2

Jeśli zainstalowałeś go za pomocą brew w OSX, możesz załadować skrypt źródłowy do env skryptu, pozyskując go zgodnie ze szczegółami instalacji.

Mam to w projektach, aby je uruchomić:

brew install nvm
. $(brew --prefix nvm)/nvm.sh
nvm install
...

1

Małe objaśnienie na górze odpowiedzi udzielonej przez @webKnjaZ: Musiałem znaleźć funkcję powłoki dla każdej komendy, aby działała w moim skrypcie bash. Coś takiego:

. ~/.nvm/nvm.sh --version
. ~/.nvm/nvm.sh install 4.4.5

1
to nie działało dla mnie. Dla mnie działało: ~ / .nvm / nvm.sh nvm --version
jeff musk

0

To samo stało się poniżej, co działało dla mnie:

root @ ubuntu: / usr / src / playground # n = $ (który węzeł); 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' + express@4.16.2 dodał 49 pakietów w 129.186s

Powyższe polecenie jest nieco skomplikowane, ale wszystko, co robi, to kopiowanie dowolnej wersji węzła, którą masz aktywną za pośrednictwem nvm do katalogu / usr / local / (gdzie globalne pliki instalowane przez użytkownika powinny znajdować się na VPS w systemie Linux) i ustawianie uprawnień tak, aby wszyscy użytkownicy mogą uzyskać do nich dostęp.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.