将主机的当前用户传递给 vagrant shell provisioner

Passing the host's current user to to vagrant shell provisioner

我想在我的 Vagrantfile 中传递当前用户,但我不知道该怎么做。

我试过这个:

config.vm.provision :shell, inline: "echo $(whoami) > /etc/profile.d/me"

但它导致 'root' 被放入文件,我认为这是 vagrant 主机的用户。我想获取主机的用户名。

那是因为你的内联 shell 脚本 运行 在 vagrant box 中。

你可以这样做:

根据平台从主机获取用户名(如果您不希望有 windows 主机,可以简化此操作)。

@host_user = Gem.win_platform? ? "#{ENV['USERNAME']}" : "#{ENV['USER']}"

在配置期间将主机的用户名作为环境变量传递,并在内联脚本中使用它。

config.vm.provision "Passing host username as env var...", type: :shell, inline: $hostUser, env: {"HOST_USER" => "#{@host_user}"}

将此添加到 ruby 部分之外,然后通过上面的代码获取 运行 并将作为环境变量传递的用户名附加到您指定的文件中:

$hostUser = <<-SET_HOST_USER
echo "$HOST_USER" > /etc/profile.d/me"
SET_HOST_USER