jpw*_*ynn 3 vagrant vagrantfile
如何使 Vagrantfile 将文件内容附加到 ~/.bashrc 文件?
在我的 Vagrantfile 中,我尝试将文件 /vagrant/dev_env_config 的内容附加到 ~/.bashrc 文件中。
当我运行时,vagrant up它输出 echo 语句,并且输出 ~/.bashrc 文件的预期内容......所以我知道它正在读取文件 dev_env_config 并且似乎要附加它。
但是,当我运行vagrant ssh并且cat ~/.bashrc~/.bashrc 文件未修改时,它是默认的 ~/.bashrc 文件
换句话说, ~/.bashrc 文件的 mods 在 vagrant provison 运行和我运行之间的某个地方丢失了vagrant ssh
# Vagrantfile
Vagrant.configure("2") do |config|
... various cmds to set box and network...
$install_user_vars = <<SCRIPT
sudo cat /vagrant/dev_env_config >> ~/.bashrc
echo "*** here is the .bashrc file:"
cat ~/.bashrc
SCRIPT
config.vm.provision "shell", inline: $install_user_vars
end
Run Code Online (Sandbox Code Playgroud)
我认为发生的情况是配置脚本以 root(或 sudo)身份运行,因此“~”主位置实际上是 /root 而不是默认用户主位置 /home/vagrant。
我可以想出几种方法来解决这个问题:
首先(可能也是最简单的)是明确 .bashrc 路径,例如:
# Vagrantfile
Vagrant.configure("2") do |config|
... various cmds to set box and network...
$install_user_vars = <<SCRIPT
sudo cat /vagrant/dev_env_config >> /home/vagrant/.bashrc
echo "*** here is the .bashrc file:"
cat /home/vagrant/.bashrc
SCRIPT
config.vm.provision "shell", inline: $install_user_vars
end
Run Code Online (Sandbox Code Playgroud)
第二个选项可能是以非特权用户身份运行这部分配置脚本。请参阅Shell 脚本文档页面上的“特权”选项。