2013-02-13 110 views
1

Ubuntu 10.04.4 LTSUbuntu 10.04 sudo和路径

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

1)首先,所述非须藤路径红宝石:

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

2),然后将须藤路径红宝石:

$ 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> 

即路径红宝石是在$ PATH变量集合时,我使用sudo。

4)再等不多的陌生人:

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

这一次,没有sudo的,但$ PATH变量的内容是一样的,对须藤。

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

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

感谢,

约翰

+0

[须藤改变路径 - 为什么?]的可能的复制(HTTP:// stackoverflow.com/questions/257616/sudo-changes-path-why) – 2016-08-30 11:10:07

回答

1

sudo echo $PATH evals $ PATH调用须藤之前。

找出肯定的:

sudo -s 
echo $PATH 

您需要添加PATH变量env_keep在/ etc/sudoers文件

+2

感谢帕斯卡尔,我只是想发布这个工程:'sudo sh -c'echo $ PATH''。我确实添加了/ etc/sudoers的路径,并且所有工作都正常。 – JohnA 2013-02-13 02:56:06

+0

是的,'sudo sh ...'也可以。我只是比较喜欢使用'sudo -s'的较短版本,而不是键入:) – 2013-02-13 02:59:27