通过sudo传递PATH
简而言之:如何使sudo每次都不刷新PATH? 我在服务器上部署了一些用Ruby on Rails编写的网站(Debian测试)。我使用Mongrel + Nginx来托管它们,但是当我需要重新启动Mongrel(例如进行一些更改后)时,会出现一个问题。 所有站点都在VCS中进行了检查(git,但这并不重要),并将所有者和组设置为我的用户,而Mongrel则在杂项用户的严格限制下运行,呵呵。因此,Mongrel必须在root(可以自动更改UID)或mongrel下启动。 为了管理杂种,我使用mongrel_cluster gem,因为它允许通过一个命令启动或停止任何数量的Mongrel服务器。但是它需要目录/var/lib/gems/1.8/bin位于PATH中:这不足以用绝对路径启动它。 修改root .bashrc中的PATH并没有改变,调整sudo的env_reset和env_keep也没有。 那么问题来了:如何将目录添加到PATH或将用户的PATH保留在sudo中? 更新:一些例子 $ env | grep PATH PATH=/usr/local/bin:/usr/bin:/bin:/usr/games:/var/lib/gems/1.8/bin $ sudo cat /etc/sudoers | egrep -v '^$|^#' Defaults env_keep = "PATH" root ALL=(ALL) ALL %sudo ALL=NOPASSWD: ALL $ sudo env | grep PATH PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin 我也可以说,它在Debian稳定版(lenny)中也是如此。