1

Ubuntu 10.04.4 LTS

我已经在包括 stackoverflow 在内的各种网站上看到了有关 sudo 和 PATH 的帖子。我认为这是不同的,所以我很确定它不是重复的(但我不确定)。

1)一、ruby的非sudo路径:

$ which ruby
/usr/local/ruby/bin/ruby

2)然后是ruby的sudo路径:

$ sudo which ruby
/usr/bin/ruby

好的,到目前为止一切顺利。当我使用 sudo 时路径发生了变化。

3)但这是我没有得到的部分:

$ sudo echo $PATH
/home/cm6/bin:/usr/local/ruby/bin:/usr/local/ruby/bin:/usr/local/sbin:<snipped>

即,当我使用 sudo 时,ruby 的路径在 $PATH 变量集中。

4)又有点陌生:

$ echo $PATH
/home/cm6/bin:/usr/local/ruby/bin:/usr/local/ruby/bin:/usr/local/sbin:<snipped>

这次没有sudo,但是$PATH变量内容和sudo一样。

鉴于 $PATH 变量在有或没有 sudo 的情况下是相同的,为什么“which ruby​​”给了我不同的答案?就好像 $PATH 变量在 sudo 下没有保存真正的 PATH。

所以,最后,我的问题是:如何获得 sudo 使用的真实/准确/正确的 PATH?

谢谢,

约翰

4

1 回答 1

1

sudo echo $PATH在调用 sudo 之前评估 $PATH。

确定:

sudo -s
echo $PATH

您需要将 PATH 变量添加到 /etc/sudoers 中的 env_keep

于 2013-02-13T02:43:35.517 回答