为什么在远程VM上使用nvm和yarn配置节点不起作用?

时间:2017-01-06 21:49:14

标签: node.js bash ssh nvm

我正在尝试使用脚本自动执行VM配置,并且无法访问在~/.bashrc~/.bash_profile~/.profile中设置的某些路径变量。

我的远程虚拟机正在运行ubuntu 14.04 LTS,我正在使用ssh进行部署。

这是连接在一起以作为bash命令运行的阵列,通过安装nvm来配置vm:

返回[       rm -rf ~/.nvm,       sudo apt-get update,       sudo apt-get install -y build-essential libssl-dev,       curl -sL https://raw.githubusercontent.com/creationix/nvm/v0.31.0/install.sh -o install_nvm.sh,       bash install_nvm.sh,       echo "source ~/.nvm/nvm.sh" >> ~/.bash_profile     ]。加入(' \ n&#39);



return [
      `rm -rf ~/.nvm`,
      `sudo apt-get update`,
      `sudo apt-get install -y build-essential libssl-dev`,
      `curl -sL https://raw.githubusercontent.com/creationix/nvm/v0.31.0/install.sh -o install_nvm.sh`,
      `bash install_nvm.sh`,
      `echo "source ~/.nvm/nvm.sh" >> ~/.bash_profile`
    ].join('\n');




但是,当我运行实际安装node和yarn的下一个脚本时,它找不到nvm



return [
      `nvm install ${config.node.version}`,
      `nvm use ${config.node.version}`,
      `echo "using node $(node -v) and npm $(npm -v)"`,
      `curl -o- -L https://yarnpkg.com/install.sh | bash`,
      'echo "export PATH="$HOME/.yarn/bin:$PATH"" >> ~/.bash_profile',
    ].join('\n');




这是错误:     bash:nvm:找不到命令

bash: line 1: nvm: command not found`

我不想ssh并手动将任何内容添加到任何各种配置文件中。我希望脚本完成所有工作。我还想避免在ssh会话开始时采购~/.nvm/nvm.sh或获取任何配置文件。我的印象是ssh会话会自动提供~/.bash_profile,然后应该从那些变量读取正确的?如果没有,那么我如何配置我的部署脚本以自动访问这些变量?

1 个答案:

答案 0 :(得分:0)

基于您正在使用&&amp ;;正如您在评论中所说,我会在运行source ~/.nvm/nvm.sh命令之前向实际nvm添加一行。在运行之前,您可能没有在shell上使用该命令。

改变这个:

return [
      `rm -rf ~/.nvm`,
      `sudo apt-get update`,
      `sudo apt-get install -y build-essential libssl-dev`,
      `curl -sL https://raw.githubusercontent.com/creationix/nvm/v0.31.0/install.sh -o install_nvm.sh`,
      `bash install_nvm.sh`,
      `echo "source ~/.nvm/nvm.sh" >> ~/.bash_profile`
    ].join('\n');

对此:

return [
      `rm -rf ~/.nvm`,
      `sudo apt-get update`,
      `sudo apt-get install -y build-essential libssl-dev`,
      `curl -sL https://raw.githubusercontent.com/creationix/nvm/v0.31.0/install.sh -o install_nvm.sh`,
      `bash install_nvm.sh`,
      `echo "source ~/.nvm/nvm.sh" >> ~/.bash_profile`,
      `source ~/.nvm/nvm.sh`
    ].join('\n');