我有一个运行 Ubuntu 12.04 的登台服务器,我正在 git 上创建一些接收后脚本,以自动部署我们保留在该服务器上的一些存储库。
我创建了一个无家可归的用户“git”(出于安全原因)来处理 git 的 ssh 连接。
当有人在 repo 上推送一些东西时,我想运行compass compile
(指南针作为 ruby gem 安装)。所以我使用 RVM 在该服务器上安装和管理 ruby。我使用多用户方法完成了所有 rvm 安装过程。当我使用 'git' 用户运行 ruby -v 时,我得到了正确的输出,我的意思是,rvm 多用户安装几乎没问题。
问题是当我尝试运行一个可执行的 gem 时。
我注意到我的普通用户的 .bash_profile 有这个(由 rvm 添加):
[[ -s "/usr/local/rvm/scripts/rvm" ]] && source "/usr/local/rvm/scripts/rvm" # Load RVM into a shell session *as a function*
此代码将 gems 的 bin 目录添加到 $PATH。
[normaluser]$ echo $PATH
/usr/local/rvm/gems/ruby-1.9.2-p320/bin:/usr/local/rvm/gems/ruby-1.9.2-p320@global/bin:/usr/local/rvm/rubies/ruby-1.9.2-p320/bin:/usr/local/rvm/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/rvm/gems/ruby-1.9.2-p320/bin/:/usr/local/rvm/bin
由于“git”用户无家可归,它没有 .bash_profile 所以我将该代码添加到 /etc/profile.d/ 上的脚本中
但它不起作用,因为每次我尝试以 git 执行 /usr/local/rvm/scripts/rvm 时,它都会退出 git 的 bash 会话并返回到我的正常用户会话。它类似于:
[normaluser]$ sudo -u git bash
[git]$ exec /usr/local/rvm/scripts/rvm
[normaluser]$
没有打印错误...
为什么 rvm 脚本从 bash 会话中退出?
如何在无家可归的用户上设置 rvm $PATH?