我正在用引导程序脚本。除了一行之外,该脚本运行正常:
echo "source /root/.venvburrito/startup.sh" >> ~/.profile
此行失败。我没有得到任何有关它的输出,但是当我得到vagrant ssh
并检查~/.profile
文件时,我可以看到它source /root/.venvburrito/startup.sh
没有附加到文件中。
我如何才能将命令附加source /root/.venvburrito/startup.sh
到文件以便每次执行时都能获取该命令vagrant ssh
?
答案1
shell (和大多数其他) 配置程序以 root 用户身份运行sudo
。但对于 shell 配置程序,您可以将privileged
属性设置为false
以 SSH 用户身份运行。
例子:
Vagrant.configure("2") do |config|
# ...
config.vm.provision "shell", path: "bootstrap.sh", privileged: false
end
看文件更多细节。
答案2
运行脚本vagrant provision
:
#whoami
root
#echo $HOME
/root
与跑步相比vagrant ssh
:
#whoami
vagrant
#echo $HOME
/home/vagrant
换句话说,当我使用 时~/.profile
,在配置脚本中会~
扩展为/root
,而当我通过 sssh 进入虚拟盒后使用它时,它会扩展为/home/vagrant
。
因此,为了将该行附加到~/.profile
可以通过 ssh 访问的文件中,您需要在配置脚本中添加以下行:
echo "source /root/.venvburrito/startup.sh" >> /home/vagrant/.profile
如果您使用,printenv
您可以看到所有环境变量设置。这表明您还可以使用:
echo "source /root/.venvburrito/startup.sh" >> $PWD/.profile
答案3
我也遇到了同样的情况。然后我在阅读@tmatilai 的评论后意识到它实际上已经为 root 用户设置了它!
你可以做
sudo su -
到达 root 权限。然后你会看到你的行被添加到文件(在 /root/.profile 中)
此外,您可以改用完全限定名称,而不是按照他的建议设置权限:
echo "source /root/.venvburrito/startup.sh" >> /home/vagrant/.profile