web-dev-qa-db-fra.com

La commande nvm n'est pas disponible dans le script bash

J'essaye de construire un script dans lequel nvm et éventuellement le nœud seront installés.
J'ai installé nvm avec cURL. Je vois les modifications dans le .profile ou .bashrc fichier (les deux fonctionnent) et lorsque vous tapez nvm à l'invite bash, il affiche les options disponibles, etc.
Donc nvm fonctionne. Manuellement, je peux installer le nœud, mais dès que je mets la commande nvm dans un script Shell:

nano test.sh

#!/bin/bash
nvm

et lancez-le avec:

chmod 755 test.sh
./test.sh

Je reçois:

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

S'il ne trouve pas nvm, je n'ai même pas besoin de penser à

nvm ls-remote 

ou

nvm install ...

J'ai installé Ubuntu 14.04 et Bash est mon Shell.

41
okidoki

La commande nvm est une fonction Shell déclarée dans ~/.nvm/nvm.sh.

Vous pouvez vous procurer l'un des scripts suivants au début du vôtre pour rendre nvm() disponible:

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

Si vous l'avez installé via brew sur OSX, vous pouvez charger le script provenant de brew dans le script env en l'achetant comme il le précise lors de l'installation.

J'ai ceci dans des projets pour bootstrap eux:

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

Petite légende en plus de la réponse fournie par @webKnjaZ: J'ai dû utiliser la fonction Shell pour chaque commande pour la faire fonctionner dans mon script bash. Quelque chose comme ça:

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

La même chose qui se trouvait ci-dessous est la chose qui a fonctionné pour moi:

root @ ubuntu:/usr/src/Playground # n = $ (quel noeud); n = $ {n%/bin/node}; chmod -R 755 $ n/bin/*; Sudo cp -r $ n/{bin, lib, share}/usr/local

root @ ubuntu:/usr/src/aire de jeux # Sudo npm install express '/usr/src/playground/package.json' + [email protected] a ajouté 49 packages en 129.186s

La commande ci-dessus est un peu compliquée, mais tout ce qu'elle fait est de copier la version du nœud que vous avez active via nvm dans le répertoire/usr/local/(où les fichiers globaux installés par l'utilisateur doivent vivre sur un VPS linux) et de définir les autorisations afin que tous les utilisateurs peuvent y accéder.

0
ABHISHEK SHARMA