将主机的当前用户传递给无用的Shell配置程序

时间:2019-01-03 22:19:20

标签: vagrant vagrantfile vagrant-provision

我想在Vagrantfile中传递当前用户,但是我不确定该怎么做。

我已经尝试过了:

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

但是它导致将“ root”放入文件中,我认为这是无所事事的主机的用户。我想获取主机的用户名。

1 个答案:

答案 0 :(得分:1)

那是因为您的嵌入式shell脚本在无业游民的框中运行。

您可以这样做:

根据平台从主机获取用户名(如果您从不希望使用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