我正在尝试设置一个 shell 脚本,在使用 vagrant 创建虚拟机后在用户帐户上下文中运行;我是 Windows 用户,因此我对 bash 脚本的了解有限。我正在使用虚拟机设置 Linux 机器,这样我就可以在今年晚些时候切换到 Mac 之前使用更高级的操作系统基础 ;-)
问题:我尝试使用安装脚本安装 nvm;网站指出,安装 nvm 后,您必须重新加载 bash shell。我的理解是,我可以改为 source my,.bashrc
而不必重新启动 shell(这很不方便)。这是我正在使用的 shell 脚本:
## NVM
# install nvm
wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.25.4/install.sh | bash
# copy nvm config
cp /vagrant/dotfiles/.nvmrc ~/.nvmrc
# let bash see the new bash profile
source ~/.bashrc
# add nvm
nvm install
这一切都是在用户帐户的上下文中运行的(没有 sudo,但这不是必需的)。问题是,一旦我们到达nvm install
,似乎采购.bashrc
尚未暴露nvm
给 bash shell,并且它失败了,因为它找不到nvm
。我使用的是 Ubuntu 14.04.2 LTS(GNU/Linux 3.13.0-53-generic i686),它使用 bash +.bashrc
来实现这一点。
控制台输出如下。
==> workspace: => Downloading nvm from git to '/home/vagrant/.nvm'
=> workspace:
==> workspace: Cloning into '/home/vagrant/.nvm'...
==> workspace: * (detached from v0.25.4)
==> workspace: master
==> workspace: => Source string already in /home/vagrant/.bashrc
==> workspace: => Close and reopen your terminal to start using nvm
==> workspace: /tmp/vagrant-shell: line 12: nvm: command not found
答案1
哈哈,我做了完全一样的事情,也同样被难住了。源代码应该可以工作……但实际上却不行。
解决方案: 源 ~/.nvm/nvm.sh
直接找到源头(没有双关语的意思)似乎已经解决了这个问题。
另外需要注意的是,使用 vagrant up/reload --provision 会以 root 身份运行任何配置脚本,但是如果你使用 vagrant ssh 进入你的机器,它会将你放入没有 ~/.nvm 的 vagrant 用户中
/root/.nvm 与 /home/vagrant/.nvm