nvm comando não disponível no script bash

32

Estou tentando criar um script no qual nvm e eventualmente o nó serão instalados.
Eu instalei nvm com cURL. Eu vejo as modificações no arquivo .profile ou .bashrc (ambos funcionam) e ao digitar o nvm no 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 eu colocar o comando nvm 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 for possível encontrar nvm , nem preciso pensar em

nvm ls-remote 

ou

nvm install ...

Eu tenho o Ubuntu 14.04 instalado e o Bash é meu shell.

    
por okidoki 12.02.2015 / 18:12

4 respostas

55
O comando

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

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

. ~/.nvm/nvm.sh
. ~/.profile
. ~/.bashrc
. $(brew --prefix nvm)/nvm.sh  # if installed via Brew
    
por 12.02.2015 / 18:31
1

Se você instalou via brew no OSX, então você pode carregar o script sour brew no script env, fornecendo-o como detalhes da instalação.

Eu tenho isso em projetos para fazer o bootstrap deles:

brew install nvm
. $(brew --prefix nvm)/nvm.sh
nvm install
...
    
por 10.05.2016 / 15:22
0

Pequena frase de destaque sobre a resposta fornecida por @webKnjaZ: Eu tive que criar a função de shell para cada comando para que funcionasse no meu script bash. Algo parecido com isto:

. ~/.nvm/nvm.sh --version
. ~/.nvm/nvm.sh install 4.4.5
    
por 20.03.2017 / 13:36
0

A mesma coisa aconteceu abaixo está a coisa 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, share} / usr / local

root @ ubuntu: / usr / src / playground # instalação do sudo npm express '/usr/src/playground/package.json' + [email protected] adicionou 49 pacotes em 129.186s

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

    
por 04.02.2018 / 12:59