1

我正在尝试创建一个仅运行 shell 脚本的简单 Vagrant 供应商。这是我到目前为止所拥有的:

Vagrant.configure("2") do |config|
    config.vm.provision "reset", type: "shell", run: "always" do |s|
        s.privileged = false
        s.path = "run.sh"
    end
end

所以想法是,当这个provisioner运行时,它会打开run.sh文件作为起点。这很好,但是,我想在run.sh文件中加载其他脚本:

运行.sh

for each in scripts/*.sh;
do
    bash $each > /dev/null 2>&1 ;
    rm $each > /dev/null 2>&1 ;
done ;

问题出在/scripts/目录上。它位于 Vagrantfile 所在的 Vagrant 文件夹内,但其内容run.sh实际上已复制到新位置并从那里运行。所以问题是我无法真正访问该scripts目录。有解决方案吗?

4

1 回答 1

0

如果您的脚本目录与 Vagrantfile 放在同一位置,它会自动与 /vagrant 目录下的 VM 共享,然后您可以引用完整路径并替换scripts/*.sh/vagrant/scripts/*.sh

您还可以使用 /scripts 之类的内容专门为您的脚本目录创建一个新的同步文件夹,并在您的 bash shell 中使用这个新的 /scripts 文件夹

于 2015-12-17T13:03:18.997 回答