Vagrant Shell 作为用户成功执行,但没有 'stick'

Vagrant Shell Executes Successfully as User but it doesn't 'stick'

此代码似乎在 'vagrant up' 上运行良好,但是当我 'vagrant ssh' 进入虚拟机时,我必须重做“#doesn't take”块中的所有内容,即使我看到脚本正在 运行 时成功输出。

在 Vagrantfile 中:

Vagrant.configure(2) do |config|

  config.vm.box = "ubuntu/trusty64"

  config.vm.network "forwarded_port", guest: 9000, host: 9000, auto_correct: true
  config.ssh.forward_agent = true

  config.vm.synced_folder ".", "/home/vagrant/www", create: true, group: "vagrant", owner: "vagrant"

  config.vm.provision :shell, path: "vagrant/rootScript.sh"
  config.vm.provision :shell, privileged: false, path: "vagrant/userScript.sh" 
end

rootScript.sh:

sudo apt-get update
sudo apt-get install -y git
sudo apt-get install python-software-properties python g++ make

sudo apt-get update

userScript.sh:

cd www           
touch test.txt    # this is successfully created in the correct folder

whoami            # 'vagrant'
echo "${PWD}"     # 'home/vagrant/www'

# # Installing nvm
wget -qO- https://raw.github.com/creationix/nvm/master/install.sh | sh

# # This enables NVM without a logout/login
export NVM_DIR="/home/vagrant/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"  # This loads nvm

# Install a node and alias
nvm install 0.10.33

# ************** doesn't take **************    
nvm use 0.10.33
npm install -g npm@latest
npm install -g bower grunt-cli
npm install
bower install
# *******************************************

whoami                   # still 'vagrant'
echo "${PWD}"            # still 'home/vagrant/www'

为什么这些命令需要在 ssh 中重新运行?有什么我可以做的让它们 'take' 而 运行 宁作为脚本吗?使我抓狂。感谢您的帮助。


更新——刚刚发现 npm 和 bower 命令确实采用了——唯一似乎在脚本中不起作用的命令是 'nvm use 0.10.33'

nvm use 仅为该 shell 会话设置节点版本。

要使其适用于任何新的 shell,您应该改用 nvm alias default 0.10.33nvm README:

中简要提到了这一点

To set a default Node version to be used in any new shell, use the alias 'default':

nvm alias default stable

这仅适用于新的 shell,因此如果您想同时执行任何命令,您还需要使用 nvm use 0.10.33

在您的情况下,您可能只想在 userScript.sh.

节点配置的末尾添加 nvm alias default 0.10.33 命令