El comando nvm no está disponible en el script bash

39

Estoy tratando de construir un script en el que nvmeventualmente se instalará el nodo.
Lo he instalado nvmcon cURL. Veo las modificaciones en el archivo .profileo .bashrc(ambos funcionan) y cuando escribo nvmen el indicador bash, muestra las opciones disponibles, etc.
Así que nvm funciona. Manualmente puedo instalar el nodo, pero tan pronto como pongo el nvmcomando en un script de shell:

nano test.sh

#!/bin/bash
nvm

y ejecutarlo con:

chmod 755 test.sh
./test.sh

Yo obtengo:

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

Si no puede encontrar nvm, ni siquiera tengo que pensar en

nvm ls-remote 

o

nvm install ...

Tengo Ubuntu 14.04 instalado y Bash es mi shell.

Oki Doki
fuente
Imprimiría la ruta en el script antes de llamar a nvm y verificaría si es correcta.
Programador

Respuestas:

70

nvmEl comando es una función de shell declarada en ~/.nvm/nvm.sh.

Puede obtener cualquiera de los siguientes scripts al comienzo del suyo para que nvm()estén disponibles:

. ~/.nvm/nvm.sh
. ~/.profile
. ~/.bashrc
. $(brew --prefix nvm)/nvm.sh  # if installed via Brew
webKnjaZ
fuente
Hola Gracias. Esto tiene sentido ya que nvm está "instalado" en ~ / .nvm. Y probablemente sea solo un script de shell. Sin embargo, lo que me falta es que puedo escribir nvm y hacer que funcione, pero cuando intento los scripts de shell en ~ / .nvm no funciona.
okidoki
a que te refieres trying the shell scripts in ~/.nvm? Le expliqué cómo ejecutar nvmdesde el script de shell anterior. ¿Hay algo poco claro?
webKnjaZ
Para elaborar mi último comentario. cuando "sudo find / -iname nvm *" solo encuentro cosas en mi carpeta ~ / .nvm. Ejecutar ~ / .nvm / nvm-exec o ~ / .nvm / nvm.sh (los únicos archivos en ~ / .nvm, que resultan ser scripts de shell) no me dan nvm, como simplemente escribir "nvm" en La línea de comando. Entonces, ¿dónde está el enlace entre nvm y el programa?
okidoki
Oh ... supongo que nvmestá aliasen su entorno de shell. Publique el resultado de which nvmy esto aclarará las cosas.
webKnjaZ
2
Lo instalé nvmlocalmente e hice algunas investigaciones. nvmes una función de shell declarada en nvm.sh, así que básicamente solo necesita . ~/.nvm/nvm.sh.profile.bashrc
obtenerla
2

Si lo instaló a través de brew en OSX, puede cargar el script de origen de brew en el entorno de script al obtenerlo como se detalla en la instalación.

Tengo esto en proyectos para arrancarlos:

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

Pequeña llamada además de la respuesta proporcionada por @webKnjaZ: tuve que buscar la función de shell para cada comando para que funcione en mi script bash. Algo como esto:

. ~/.nvm/nvm.sh --version
. ~/.nvm/nvm.sh install 4.4.5
rahulthakur319
fuente
1
No funcionó para mí. Lo siguiente funcionó para mí: ~ / .nvm / nvm.sh nvm --version
jeff musk
0

Lo mismo que pasó a continuación es lo que funcionó para mí:

root @ ubuntu: / usr / src / playground # n = $ (qué 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' + [email protected] agregó 49 paquetes en 129.186s

El comando anterior es un poco complicado, pero todo lo que está haciendo es copiar cualquier versión del nodo que tenga activa a través de nvm en el directorio / usr / local / (donde los archivos globales instalados por el usuario deben vivir en un VPS de Linux) y establecer los permisos para que Todos los usuarios pueden acceder a ellos.

ABHISHEK SHARMA
fuente