【问题标题】:Read from file while running a script during Vagrant provisioning?在 Vagrant 配置期间运行脚本时从文件中读取?
【发布时间】:2017-02-17 04:22:43
【问题描述】:

在 vagrant 配置阶段运行的文件的路径是什么?

在 Vagrantfile 中,为了将文件放置在正确的目录中,我有一个运行 shell 脚本的config.vm.provision(例如:`path:".provision/setup.sh')。

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

该脚本在 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='./gitrepos' 但似乎相对路径不起作用。

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

【问题讨论】:

  • 要清楚,setup.shgitrepos 文件都在同一个目录中,但如果 Vagrant 是运行脚本的文件,我不知道如何访问该文件。

标签: bash path vagrant vagrantfile


【解决方案1】:

配置脚本从 /tmp 文件夹执行 - 如果您通过 ssh 进入您的虚拟机并检查临时文件夹,您将看到类似 vagrant-shell 的内容以及您的脚本内容。但是,并非您目录中的所有文件都被推送到 /tmp 文件夹。

如果您的 gitrepos 文件在您的项目目录中,则默认情况下它在 /vagrant 目录下共享,因此您可以从那里读取

如果不是,您需要创建一个特定的sync_folder,以便您可以从 VM 中读取文件

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-24
    • 2023-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-01
    • 1970-01-01
    相关资源
    最近更新 更多