Lo instalé nvm
y lo agregué a mi/home/www-data/.bashrc
Llamar nvm
funciona.
bash
nvm
obras
pero
$ bash -c nvm
bash: nvm: command not found
No funciona.
Lo mismo cuando especifico el rcfile
$ bash --rcfile /home/www-data/.bashrc -c "nvm"
bash: nvm: command not found
¿Porqué es eso?
En el resultado final, quiero usar nvm en el comando RoboFile exec() e intenté incluirlo bash -c
porque nvm
es una función bash y no un script real.
Respuesta1
¿Porqué es eso?
Cuando se invoca con -c
, bash se ejecuta como unno interactivocaparazón. Los archivos de inicio del shell interactivo predeterminados ( /etc/bash.bashrc
, ~/.bashrc
) no se leen. Incluso si fuerza ~/.bashrc
la lectura, es probable que su cuerpo no se ejecute: el predeterminado de Ubuntu (copiado de /etc/skel durante la creación de la cuenta), por ejemplo, incluye las líneas
# If not running interactively, don't do anything
case $- in
*i*) ;;
*) return;;
esac
que pasa por alto todo lo siguiente.
Túpodríafuerce el uso de un shell interactivo bash -ic
, sin embargo, eso puede causar otros problemas dependiendo de qué más haya en su archivo .bashrc
.
Respuesta2
Intentar
bash -ic nvm
Ejecutando bash como shell interactivoyproporcionar un comando no parece cumplir con la documentación de bash pero funciona.
Respuesta3
me cambié ahttps://www.npmjs.com/package/nque funciona mucho mejor en este caso.
Es una alternativa nvm
y no necesita todas esas secuencias de comandos bash. Por eso probablemente funcione también sin los problemas anteriores.
n
se puede instalar con el siguiente comando:
npm install -g n