Total Pageviews

Sunday, 26 November 2017

sudo 与 PATH


好吧,我承认,这个标题的目的是SEO。
问题是这样的,最近偶然发现在ubuntu下使用sudo的话会丢失当前的PATH环境变量。比如说,我有一个目录专门放脚本: /scripts/,当前用户的PATH也加入了该路径。其中有一些脚本是要super权限的,比如/scripts/abc。于是使用sudo abc,发现ubuntu说找不到abc这个命令。
然后我想到可能sudo使用的是ROOT的环境变量,于是将这个该死的目录加入到/root/下的相关文件PATH里,然后还是不行。
上网查了下,有人说改/etc/environment中的PATH,可是还不行。
最后发现,原来sudo这个程序在编写的时候加入了这样一个功能:重置PATH为某个安全的组合(类似于/bin:/usr/bin之类的),这样不管你怎么折腾,使用sudo的时候PATH总是会丢的。
所以有两个解决方案,要么把所有的脚本拷到默认路径中(或符号链接),要么就在sudo的时候打全路径.

No comments:

Post a Comment