【问题标题】:Why is `source /home/vagrant/.bashrc` not working in a Vagrant shell provisioning script?为什么`source /home/vagrant/.bashrc` 在 Vagrant shell 配置脚本中不起作用?
【发布时间】:2015-04-14 13:28:17
【问题描述】:

我是 having problems,使用 Vagrant 使用的 shell 配置脚本,因为它没有执行 source /home/vagrant/.bashrc。我已将问题简化为...

在我的虚拟机中,我在/home/vagrant/testfile 有一个文件,其中包含以下内容:

echo "In testfile"

/home/vagrant/.bashrc 的末尾我有这个:

echo "In .bashrc"

这两个文件都归vagrant 用户所有。

在我的一个 Vagrant 配置 shell 脚本中,我有这个:

echo "Hello"
source /home/vagrant/testfile
source /home/vagrant/.bashrc
echo "Goodbye"

运行vagrant provision 给出了这个:

Hello
In testfile
Goodbye

当我执行vagrant ssh 时,/home/vagrant/.bashrc 会照常运行,我会自动看到:

In .bashrc

那么为什么在我的配置脚本中执行source /home/vagrant/.bashrc 没有效果?

【问题讨论】:

  • .bashrcrest 做什么?我打赌在顶部附近有一个交互式会话测试(检查PS1 或检查$- 或类似的值)。
  • 呃,是的,你说得对,Etan,谢谢。我没有想到要查看脚本的其余部分。

标签: shell vagrant


【解决方案1】:

您需要从.bashrc 顶部删除“如果不以交互方式运行则退出”位(例如[ -z "$PS1" ] && return)。

【讨论】:

  • 谢谢!实际上,查看.bashrc 中的其他内容是缩小我没想过的问题的一点。是的,文件顶部有一点,不是我放在那里的,这阻止了它在像这样运行时做任何事情。
  • 不要不要删除它。这对于通常进入该文件的各种内容都很重要。任何需要运行的东西,即使那不是真的很可能不应该在那个文件中(或者如果它们应该在那个位之上)。
  • 哦,我不打算删除它,但感谢您的警告。现在我知道为什么会发生这种情况,我可以找到解决我原来问题的其他方法。确实让我烦恼的是,有些事情正在悄悄地失败,我不知道为什么!现在我知道了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-13
  • 2023-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-05
相关资源
最近更新 更多