Vagrant 为什么';流浪者供给者修改~/.bashrc?
如何使Vagrantfile将文件内容附加到~/.bashrc文件 在我的vagrant文件中,我试图将/vagrant/dev_env_config文件的内容附加到~/.bashrc文件中 当我运行Vagrant 为什么';流浪者供给者修改~/.bashrc?,vagrant,vagrantfile,Vagrant,Vagrantfile,如何使Vagrantfile将文件内容附加到~/.bashrc文件 在我的vagrant文件中,我试图将/vagrant/dev_env_config文件的内容附加到~/.bashrc文件中 当我运行vagrant up时,它输出echo语句,并输出~/.bashrc文件的预期内容。。。。所以我知道它正在读取dev_env_config文件,并且似乎在附加它 但是,当我运行vagrant ssh然后运行cat~/.bashrc时,~/.bashrc文件未被修改,它是默认的~/.bashrc文件
vagrant up
时,它输出echo语句,并输出~/.bashrc文件的预期内容。。。。所以我知道它正在读取dev_env_config文件,并且似乎在附加它
但是,当我运行vagrant ssh
然后运行cat~/.bashrc
时,~/.bashrc文件未被修改,它是默认的~/.bashrc文件
换句话说~/.bashrc文件的mods在vagrant provision运行和我运行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
#文件
Vagrant.configure(“2”)do | config|
... 要设置机箱和网络的各种CMD。。。
$install\u user\u vars=~/.bashrc
echo“***这是.bashrc文件:”
cat~/.bashrc
剧本
config.vm.provision“shell”,内联:$install\u user\u vars
结束
我认为现在的情况是,配置脚本以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
#文件
Vagrant.configure(“2”)do | config|
... 要设置机箱和网络的各种CMD。。。
$install\u user\u vars=/home/vagrant/.bashrc
echo“***这是.bashrc文件:”
cat/home/vagrant/.bashrc
剧本
config.vm.provision“shell”,内联:$install\u user\u vars
结束
第二个选项是以非特权用户的身份运行这部分配置脚本。请参阅文档页面上的“特权”选项。基本解决方案是显式地将路径设置为
.bashrc
。通常SSH用户的默认用户名(将用于vagrant SSH
操作)为vagrant
so:
$install_user_vars = <<SCRIPT
sudo cat /vagrant/dev_env_config >> /home/vagrant/.bashrc
echo "*** here is the .bashrc file:"
cat /home/vagrant/.bashrc
SCRIPT
$install\u user\u vars=/home/vagrant/.bashrc
echo“***这是.bashrc文件:”
cat/home/vagrant/.bashrc
剧本
另外,我不确定是否有必要使用sudo
命令(在sudo cat…
中)。您可能不需要它,但它取决于运行配置脚本所使用的用户。我猜这也是流浪汉
因此,如果它真的是一个
流浪者
,您可以不修改.bashrc
的路径(~/.bashrc
),但必须删除sudo cat…
命令并使用简单的cat…
。在我看来,这是一个更干净的解决方案。因为实际上我们不应该在没有需要的情况下使用sudo
(root
)权限。宾果,使路径显式工作非常完美,谢谢!在本例中,使用/home/vagrant/.bashrc重新接收~/.bashrc的所有实例