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

Ruby 使用shell配置更新Vagrant中的路径,ruby,linux,ubuntu,vagrant,provisioning,Ruby,Linux,Ubuntu,Vagrant,Provisioning,我正在使用Vagrant部署一个虚拟机,其中包含几个使用shell资源调配安装的软件包。其中一个软件包需要更新路径才能正确使用,但我无法做到这一点 以下是我的流浪汉档案的内容: # -*- 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

我正在使用Vagrant部署一个虚拟机,其中包含几个使用shell资源调配安装的软件包。其中一个软件包需要更新路径才能正确使用,但我无法做到这一点

以下是我的流浪汉档案的内容:

# -*- 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
以下是我尝试过的事情:

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

    export PATH="/usr/local/x86_64/bin:$PATH"
    
  • 尝试写入.profile文件:

    echo 'export PATH="/usr/local/x86_64/bin:$PATH"' >> .profile
    
  • 只需在设置期间尝试导出路径(即作为provision.sh中的一行代码):


  • vagrant up
    命令完成后,此命令确实允许更改以下路径
    vagrant ssh

    基于此将以下内容添加到
    provision.sh
    文件中,从而解决了问题:


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

    使用Ex/vi编辑器的示例:

    ex +'$s@$@\rexport PATH=/var/lib/vendor/bin:$PATH@' -cwq /etc/bash.bashrc
    
    其中附加:

    export PATH=/var/lib/vendor/bin:$PATH
    
    进入全局
    /etc/bash.bashrc
    文件(因此它可供使用
    bash
    shell的所有用户使用,或使用
    /etc/profile
    用于所有Bourne shell)

    或者简单地使用
    cat
    ,例如:

    cat >> ~/.bashrc <<EOF
    export PATH=~/.composer/vendor/bin:\$PATH
    EOF
    

    我有一个非常类似的问题。但在我的例子中,我不得不以一个流浪用户的身份使用你的脚本,而不是以root用户的身份。由于vagrant在配置期间默认为root,因此我必须添加特权标志:
    config.vm.provision:shell,路径:'android_update.sh',priviliged:false
    。PS:可以使用多个shell脚本提供程序。
    export PATH=/var/lib/vendor/bin:$PATH
    
    cat >> ~/.bashrc <<EOF
    export PATH=~/.composer/vendor/bin:\$PATH
    EOF
    
    - name: Update bashrc to add new PATH entry:
        dest=/home/vagrant/.bashrc
        line="export PATH='/usr/local/x86_64/bin:$PATH'"
        regexp="^export PATH"
        owner=vagrant
        state=present
        insertafter=EOF
        create=True