我有一个运行Ubuntu 12.04的登台服务器,我正在git上创建一些post-receive脚本,以自动部署我们保留在该服务器上的一些存储库。
我创建了一个无家可归的用户'git'(出于安全原因)来处理git的ssh连接。
我想运行compass compile
(指南针作为红宝石宝石安装)当有人在回购物上推送东西时。
所以我使用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 /
上的脚本中但它没有用,因为每次我尝试将/ usr / local / rvm / scripts / rvm作为git执行时,它退出git的bash会话并返回到我的普通用户会话。它类似于:
[normaluser]$ sudo -u git bash
[git]$ exec /usr/local/rvm/scripts/rvm
[normaluser]$
没有印刷错误......
为什么rvm脚本退出bash会话?
如何在无家可归的用户上设置rvm $ PATH?
答案 0 :(得分:0)
三个问题:
/bin/sh
RVM不支持它,而是使用/bin/bash
(但你已经知道了init.d
=>中使用RVM https://rvm.io/integration/init-d 你不应该尝试在shell初始化文件中为用户提供rvm,因为它们不被init.d脚本使用,而是使用包装器,这是最有效的方法使它工作。