comando nvm non disponibile nello script bash


39

Sto cercando di creare uno script in cui nvmed eventualmente il nodo verrà installato.
Ho installato nvmcon cURL. Vedo le modifiche nel file .profileo .bashrc(entrambi funzionano) e quando si digita nvmal prompt di bash, mostra le opzioni disponibili ecc.
Quindi nvm funziona. Manualmente posso installare il nodo, ma non appena inserisco il nvmcomando in uno script di shell:

nano test.sh

#!/bin/bash
nvm

ed eseguilo con:

chmod 755 test.sh
./test.sh

Ottengo:

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

Se non riesce a trovarlo nvm, non devo nemmeno pensarci

nvm ls-remote 

o

nvm install ...

Ho installato Ubuntu 14.04 e Bash è la mia shell.


Vorrei stampare il percorso nello script prima di chiamare NVV e verificare se è corretto.
Approgrammatore

Risposte:


70

nvmIl comando è una funzione shell dichiarata in ~/.nvm/nvm.sh.

Puoi rendere nvm()disponibile uno dei seguenti script all'inizio del tuo per renderlo disponibile:

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

Ciao grazie. Questo ha senso allora come nvm è "installato" in ~ / .nvm. Ed è probabilmente solo uno script di shell. Quello che mi manca è che posso digitare nvm e farlo funzionare, ma quando provo gli script della shell in ~ / .nvm non funziona.
Okidoki,

cosa intendi con trying the shell scripts in ~/.nvm? Ho spiegato come eseguire nvmdallo script di shell sopra. C'è qualcosa di poco chiaro?
webKnjaZ,

Per elaborare il mio ultimo commento. quando "sudo find / -iname nvm *" trovo solo cose nella mia cartella ~ / .nvm. L'esecuzione di ~ / .nvm / nvm-exec o ~ / .nvm / nvm.sh (gli unici file in ~ / .nvm, che si rivelano essere script di shell) non mi danno nvm, come semplicemente digitando "nvm" su la riga di comando. Quindi, dov'è il collegamento tra nvm e il programma.
Okidoki,

Oh .. immagino nvmsia un aliasambiente shell. Si prega di pubblicare l'output di which nvme questo chiarirà le cose.
webKnjaZ,

2
Ho installato nvmlocalmente e fatto alcune ricerche. nvmè una funzione shell dichiarata in nvm.sh, quindi in pratica devi solo . ~/.nvm/nvm.sh.profile.bashrc
procurartela

2

Se è stato installato tramite brew su OSX, è possibile caricare lo script di provenienza brew nello script env acquistandolo come dettagliato sull'installazione.

Ho questo nei progetti per avviarli:

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

1

Piccola didascalia in cima alla risposta fornita da @webKnjaZ: ho dovuto procurarmi la funzione shell per ogni comando per farlo funzionare nel mio script bash. Qualcosa come questo:

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

1
non ha funzionato per me. Quanto segue ha funzionato per me: ~ / .nvm / nvm.sh nvm --version
jeff

0

Stessa cosa che è successa di seguito è la cosa che ha funzionato per me:

root @ ubuntu: / usr / src / playground # n = $ (quale nodo); 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 ha aggiunto 49 pacchetti in 129.186s

Il comando sopra è un po 'complicato, ma tutto ciò che sta facendo è copiare qualsiasi versione del nodo che hai attivato tramite nvm nella directory / usr / local / (dove i file globali installati dall'utente dovrebbero vivere su un VPS di Linux) e impostare le autorizzazioni in modo che tutti gli utenti possono accedervi.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.