在Mac OS上,我的CI服务器的构build代理以root身份运行。 我已经与ruby版本上的defaul ruby -v报告2.0版,而后eval "$(rbenv init -)"正在执行,我得到所需的2.4。
如果我在每次login到shell时都要设置eval "$(rbenv init -)" ,我只要将它添加到我的〜/ .bash_profile中即可。
但是我假设从bash_profile执行命令的时候,我实际上是ssh作为用户。 我怎样才能确保Ruby的校正器命令得到执行与系统启动的根?
您可以使用一个cron作业 ,在重启时运行一个进程。
根的crontab条目看起来像这样:
@reboot $HOME/bin/startup.sh
使用crontab -e添加条目。 你可以将你的ruby命令添加到你的startup.sh文件中。
运行man 5 crontab获取更多细节和选项。
我不使用rbenv,但我的理解是,init步骤修改当前shell的环境以允许rbenv控制ruby命令(例如,通过将rbenv shims目录添加到PATH环境variables中,每个进程都有自己的环境,所以在系统启动时运行rbenv init只会影响它运行的进程,而不会影响整个系统。
你需要做的是运行eval "$(rbenv init -)"为每个你想要由rbenvpipe理的新shell。 如果你想让你的CI服务器运行任务给我们rbenv,那就意味着你需要把它添加到这些任务使用的任何初始化过程中。 我的猜测是将eval "$(rbenv init -)"到根帐户的〜/ .bash_profile和/或〜/ .bashrc中,但是不知道服务器的工作方式,我不能肯定地说。