RVM $ PATH变量给无家可归的用户

时间:2013-06-21 23:13:46

标签: ruby ubuntu gem rvm compass-sass

我有一个运行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?

1 个答案:

答案 0 :(得分:0)

三个问题:

  1. 你不应该使用/bin/sh RVM不支持它,而是使用/bin/bash(但你已经知道了
  2. 由@Casper =>解释exec用您运行的命令替换当前shell,没有返回
  3. 有文档介绍如何在init.d =>中使用RVM https://rvm.io/integration/init-d
  4. 你不应该尝试在shell初始化文件中为用户提供rvm,因为它们不被init.d脚本使用,而是使用包装器,这是最有效的方法使它工作。