gpt4 book ai didi

vagrant - 为什么 vagrant provisioner 不修改 ~/.bashrc?

转载 作者:行者123 更新时间:2023-12-04 02:02:57 25 4
gpt4 key购买 nike

如何让 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com