【发布时间】:2017-01-06 21:49:14
【问题描述】:
我正在尝试使用脚本自动化 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
].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`
].join('\n');
但是当我运行下一个实际安装节点和纱线的脚本时,它找不到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,然后应该从这些变量中读取正确吗?如果没有,那么我还能如何配置我的部署脚本以自动访问这些变量?
【问题讨论】:
-
您是否已经确认在运行第二组命令时已安装
nvm?只是想确定它应该存在。此外,对于您正在炮击的用户,您是否确保用户的 shell 设置为/bin/bash而不是/bin/sh之类的东西? -
所以第二个命令在第一个脚本之后作为 && 运行(节点进程从第一个脚本中退出 0),所以它应该已经安装了。至于用户shell,我该如何确认?
-
还有为什么这很重要?
-
这很重要,因为它可能没有路径中需要的东西。您可以从
.bash_profile脚本中获取~/.nvm/nvm.sh源代码。