使用shell配置更新Vagrant中的路径

Mat*_*att 10 ruby linux ubuntu provisioning vagrant

我正在使用Vagrant使用shell配置来部署具有多个已安装软件包的虚拟机.其中一个软件包需要更新正确使用的路径,这是我无法做到的.

这些是我的Vagrantfile的内容:

# -*- mode: ruby -*-
# vi: set ft=ruby :

# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|

config.vm.box = "precise64"
config.vm.box_url = "http://files.vagrantup.com/precise64.box"

#config.vm.network "forwarded_port", guest: 8888, host: 8888

config.ssh.forward_agent = true
config.vm.provision "shell", path: "provision.sh" 

end
Run Code Online (Sandbox Code Playgroud)

这些是我尝试过的以下内容:

  1. 使用以下命令(附加在文件末尾)创建单独的.bashrc和.profile文件,并将它们复制到主目录中:

    export PATH="/usr/local/x86_64/bin:$PATH"
    
    Run Code Online (Sandbox Code Playgroud)
  2. 尝试写入.profile文件:

    echo 'export PATH="/usr/local/x86_64/bin:$PATH"' >> .profile
    
    Run Code Online (Sandbox Code Playgroud)
  3. 只需在配置期间尝试导出PATH(即作为provision.sh中的一行代码):

    export PATH="/usr/local/x86_64/bin:$PATH"
    
    Run Code Online (Sandbox Code Playgroud)

vagrant up命令完成,该命令不支持路径之后的变化vagrant ssh.

Mat*_*att 6

provision.sh根据这篇文章,将以下内容添加到文件中解决了该问题:

echo PATH $PATH
[ -f ~/.profile ] || touch ~/.profile
[ -f ~/.bash_profile ] || touch ~/.bash_profile
grep 'PATH=/usr/local/x86_64/bin' ~/.profile || echo 'export PATH=/usr/local/x86_64/bin:$PATH' | tee -a ~/.profile
grep 'PATH=/usr/local/x86_64/bin' ~/.bash_profile || echo 'export PATH=/usr/local/x86_64/bin:$PATH' | tee -a ~/.bash_profile
. ~/.profile
. ~/.bash_profile
echo PATH $PATH
Run Code Online (Sandbox Code Playgroud)

这适用于精确的64盒,所有命令应为一行。