Eu instalei nvm
e ele foi anexado ao meu/home/www-data/.bashrc
Ligar nvm
funciona.
bash
nvm
funciona
mas
$ bash -c nvm
bash: nvm: command not found
não funciona.
mesmo quando eu especifico o rcfile
$ bash --rcfile /home/www-data/.bashrc -c "nvm"
bash: nvm: command not found
Por que é que?
No resultado final, quero usar nvm no comando RoboFile exec() e tentei envolvê-lo bash -c
porque nvm
é uma função bash e não um script real.
Responder1
Por que é que?
Quando invocado com -c
, o bash é executado como umnão interativoconcha. Os arquivos de inicialização do shell interativo padrão ( /etc/bash.bashrc
, ~/.bashrc
) não são lidos. Mesmo se você forçar ~/.bashrc
a leitura, seu corpo provavelmente não será executado - o padrão do Ubuntu (copiado de /etc/skel durante a criação da conta), por exemplo, inclui as linhas
# If not running interactively, don't do anything
case $- in
*i*) ;;
*) return;;
esac
que ignora tudo o que segue.
Vocêpoderiaforçar um shell interativo usando bash -ic
, no entanto, isso pode causar outros problemas dependendo do que mais estiver no seu arquivo .bashrc
.
Responder2
Tentar
bash -ic nvm
Executando o bash como shell interativoefornecer um comando não parece estar em conformidade com a documentação do bash, mas funciona.
Responder3
eu mudei parahttps://www.npmjs.com/package/no que funciona muito melhor neste caso.
É uma alternativa nvm
e não precisa de todos aqueles scripts bash. É por isso que provavelmente funciona também sem os problemas acima.
n
pode ser instalado com o seguinte comando:
npm install -g n