在Vagrant配置期间运行脚本时从文件读取?

时间:2016-10-08 06:53:14

标签: bash path vagrant vagrantfile

在流浪资源配置阶段运行文件的路径是什么?

在Vagrantfile中,为了将文件放在正确的目录中,我有一个运行shell脚本的config.vm.provision(例如:`path:&#34; .provision / setup.sh&#39;)。< / p>

setup.sh文件从同一文件夹中的另一个文件读取,以运行将在客户端计算机上放置文件的git repos列表。

该脚本在Vagrant之外进行了良好的测试,但我很难找到我应该说它所在的位置。以下是导致问题的代码示例:

filename='./provision/gitrepos'
exec 4<$filename
echo Start
while read -u4 p ; do
  if [ ! -z "$p" ];
  then
    is_website $p
  else
    echo
    echo "This line '#$p' is blank"
    echo
   fi
   done

此处出现问题:filename='./provision/gitrepos' 在执行vagrant up时,文件不再被视为在主机上,而是在其他地方。但是,如何找到与setup.sh文件位于同一目录中的文件的位置?

我试过`filename =&#39; ./ gitrepos&#39;但似乎相对路径似乎不起作用。

如何找到这些文件夹和文件的位置,以便我可以在配置阶段访问它们?

1 个答案:

答案 0 :(得分:0)

配置脚本是从/tmp文件夹执行的 - 如果你进入你的虚拟机并检查临时文件夹,你会看到vagrant-shell这样的内容与你的脚本内容。但是,并非目录中的所有文件都被推送到/tmp文件夹。

如果你的gitrepos文件在你的项目目录中,那么它默认在/vagrant目录下共享,所以你可以从那里读取

如果不是您需要创建特定的sync_folder,那么您可以从VM中读取该文件