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

标签 vagrant vagrantfile

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

相关文章:

database - 使用 RubyMine 通过 Vagrant 连接到数据库

vagrant - 是否可以确定vagrantfile中vagrant vm的id?

Vagrant 同步文件夹使用 NFS 错误权限

docker - Vagrant up --no-parallel 标志含义

docker - "rsync"未检测到安装在您的 guest 计算机中

vagrant - 如何强制在 Vagrant 机器上运行 playbook?

php - 在 VirtualBox 上使用 Mysql WorkBench 访问 mysql 数据库(Vagrant - ZF - BoilerPLate)

chef-infra - 如何在 Chef Recipe 中转换以下Shell命令?

python - 盒子里的卡夫卡 : unable to send messages from host

vagrant - Homestead.yaml *Shell provisioner `args` 必须是字符串或数组