在Vagrantconfiguration之后以用户身份执行命令

在初始configuration之后,有一些命令必须以普通用户身份运行。 我以为我可以使用单独的shell脚本和命令su --login -c <command> vagrant来做到这一点,但是它没有从.bashrc获取用户的path或其他环境设置。

例如:

 #!/usr/bin/env bash su --login -c "rbenv install 2.0.0-p353" vagrant su --login -c "rbenv global 2.0.0-p353" vagrant su --login -c "gem update --system" vagrant su --login -c "yes | gem update" vagrant su --login -c "gem install rdoc" vagrant su --login -c "gem install rails pg" vagrant 

有没有办法做到这一点? 也许它必须使用另一个configuration工具,如木偶或厨师? 我曾经想过创build另外一个shell脚本来源码.bashrc ,使用:file provisioner将其复制到框中,然后执行类似的命令,但是看起来有点像黑客。

什么是正确的方法来做到这一点?

你应该可以使用Vagrant Shell供应商来做到这一点,例如

 Vagrant.configure("2") do |config| $script = <<-SCRIPT rbenv install 2.0.0-p353 rbenv global 2.0.0-p353 gem update --system yes | gem update gem install rdoc gem install rails pg SCRIPT config.vm.provision "shell", inline: $script, privileged: false end 

关键是要指定privileged: false以便它将使用默认用户而不是root