Comando nvm não disponível no script bash


39

Eu estou tentando criar um script no qual nvme, eventualmente, o nó será instalado.
Eu instalei nvmcom cURL. Vejo as modificações no arquivo .profileou .bashrc(ambos funcionam) e, ao digitar nvmno prompt do bash, ele mostra as opções disponíveis etc.
Então o nvm funciona. Manualmente eu posso instalar o nó, mas assim que coloco o nvmcomando em um script de shell:

nano test.sh

#!/bin/bash
nvm

e execute-o com:

chmod 755 test.sh
./test.sh

Eu recebo:

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

Se não consegue encontrar nvm, nem preciso pensar em

nvm ls-remote 

ou

nvm install ...

Eu instalei o Ubuntu 14.04 e o Bash é o meu shell.


Eu imprimiria o caminho no script antes de chamar nvm e verificaria se está correto.
APROGRAMMER #

Respostas:


69

nvmO comando é uma função shell declarada em ~/.nvm/nvm.sh.

Você pode obter um dos seguintes scripts no início para nvm()disponibilizar:

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

Oi, obrigado. Isso faz sentido, pois o nvm é "instalado" em ~ / .nvm. E provavelmente é apenas um script de shell. O que estou perdendo é que posso digitar nvm e fazê-lo funcionar, mas ao tentar os scripts de shell em ~ / .nvm, ele não funciona.
12135 okidoki

como assim trying the shell scripts in ~/.nvm? Expliquei como executar a nvmpartir do shell script acima. Existe algo obscuro?
WebKnjaZ

Para elaborar meu último comentário. quando "sudo find / -iname nvm *", encontro apenas coisas na minha pasta ~ / .nvm. A execução do ~ / .nvm / nvm-exec ou ~ / .nvm / nvm.sh (os únicos arquivos em ~ / .nvm, que acabam sendo scripts de shell) não me dá nvm, como digitar "nvm" em a linha de comando. Então, onde está o link entre a nvm e o programa.
12135 okidoki

Oh .. eu acho que nvmé um aliasno seu ambiente shell. Por favor, publique a saída de which nvme isso vai esclarecer as coisas.
WebKnjaZ

2
Eu instalei nvmlocalmente e fiz algumas pesquisas. nvmé uma função shell declarou em nvm.sh, então basicamente você só precisa fonte com . ~/.nvm/nvm.shno início do seu script (ou, como eu escrevi acima, - fonte .profile/ .bashrc)
webKnjaZ

2

Se você o instalou através do brew no OSX, poderá carregar o script de origem do brew no env enviando-o conforme detalha a instalação.

Eu tenho isso em projetos para inicializá-los:

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

1

Texto explicativo pequeno em cima da resposta fornecida por @webKnjaZ: Eu tive que usar a função shell para cada comando para fazê-lo funcionar no meu script bash. Algo assim:

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

11
não funcionou para mim. O seguinte funcionou para mim: ~ / .nvm / nvm.sh nvm --version
jeff musk

0

A mesma coisa que aconteceu abaixo é a que funcionou para mim:

root @ ubuntu: / usr / src / playground # n = $ (qual nó); n = $ {n% / bin / node}; chmod -R 755 $ n / bin / *; sudo cp -r $ n / {bin, lib, compartilhamento} / usr / local

root @ ubuntu: / usr / src / playground # sudo npm install express '/usr/src/playground/package.json' + express@4.16.2 adicionou 49 pacotes nos 129.186s

O comando acima é um pouco complicado, mas tudo o que está fazendo é copiar qualquer versão do nó que você tenha ativado via nvm no diretório / usr / local / (onde os arquivos globais instalados pelo usuário devem residir em um VPS Linux) e definir as permissões para que todos os usuários podem acessá-los.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.