如何让 Vagrantfile 将文件的内容附加到 ~/.bashrc 文件?
在我的 Vagrantfile 中,我试图将文件/vagrant/dev_env_config 的内容附加到 ~/.bashrc 文件。
当我运行 vagrant up
时,它输出 echo 语句并输出 ~/.bashrc 文件的预期内容....所以我知道它正在读取文件 dev_env_config 和 APPEARS 以附加
但是,当我运行 vagrant ssh
然后运行 cat ~/.bashrc
时,~/.bashrc 文件未被修改,它是默认的 ~/.bashrc 文件
换句话说,~/.bashrc 文件的模组在运行 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
最佳答案
我认为发生的事情是配置脚本以 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
第二个选项可能是以非特权用户身份运行这部分配置脚本。查看 Shell Scripts 上的“特权”选项文档页面。
关于vagrant - 为什么 vagrant provisioner 不修改 ~/.bashrc?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29601217/