【问题标题】:Reload .bashrc during Vagrant Provisioning在 Vagrant Provisioning 期间重新加载 .bashrc
【发布时间】:2014-09-28 21:44:49
【问题描述】:

我正在为 Vagrant 使用 shell 配置,并尝试使用 rbenv 安装 rails。

遵循本指南:

https://gorails.com/setup/ubuntu/14.04

我已经找到了这个工作脚本

# Update sources:
whoami
sudo apt-get -y update
sudo apt-get -y install build-essential zlib1g-dev curl git-core sqlite3 libsqlite3-dev git libssl-dev


#install rbenv and Ruby 1.9.2
git clone git://github.com/sstephenson/rbenv.git ~/.rbenv
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(rbenv init -)"' >> ~/.bashrc
git clone git://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
sudo mkdir /usr/local/share/ruby-build
~/.rbenv/plugins/ruby-build/install.sh
~/.rbenv/bin/rbenv install 2.1.2
~/.rbenv/bin/rbenv global 2.1.2

以上指南使用exec $SHELL 将rbenv 添加到$PATH。我有那个命令,bashsource .bashrc 等等。他们要么不刷新 $PATH 变量,要么提前退出配置脚本。所以现在我必须通过它的完整路径调用 rbenv 。有没有办法重新加载 bash,以便我可以在 Vagrant 配置脚本期间刷新 $PATH?

【问题讨论】:

    标签: bash vagrant rbenv


    【解决方案1】:

    是否有理由不按原样在您的脚本中使用export PATH="$HOME/.rbenv/bin:$PATH"?这将修改您当前会话的环境。或者,应该在附加到相关文件后在脚本中使用source ~/.bashrc...如果这不起作用,那么就会发生一些奇怪的事情。

    请注意,bash 通常不只是在启动时读取 .bashrc 文件。它在以交互方式启动而不是作为登录 shell 的特定情况下这样做。大多数 bash 的编程调用将是非交互式的。您可以通过在调用 shell 之前设置 BASH_ENV 环境变量来指定 bash 在非交互式调用时读取的文件。

    【讨论】:

    • 我使用了相同的脚本,或者类似的脚本来提供一个流浪盒,我遇到了同样的问题。我在这个答案中使用了这个建议,它就像一个魅力。我还将导出添加到 bashrc,但直接在脚本中进行导出就像一个魅力。感谢 CBHacking
    猜你喜欢
    • 2015-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-30
    • 1970-01-01
    • 2023-04-08
    • 2017-11-29
    相关资源
    最近更新 更多