|
|

楼主 |
发表于 2006-12-21 23:25:37
|
显示全部楼层
看了一下su的man找到了如下说明。
Unless the -m or -p options are used, the current environment is passed
to the new shell with alterations. The value of $PATH is reset to
/bin:/usr/bin for normal users, or /sbin:/bin:/usr/sbin:/usr/bin for
the super user. This may be changed with the ENV_PATH and ENV_SUPATH
definitions in /etc/login.defs.
这样可以解释为什么
su
切换到root后无法找到java了,但是还是搞不懂sudo为什么不行。
因为man sudo里面说
PATH Set to a sane value if sudo was configured with the --with-secure-path option
也就是说如果没有指定--with-secure-path就应该是原有的PATH了。
另外,进行了如下实验
pl@pro:~$ sudo echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games:/usr/local/lib/jdk1.6.0/binpl@pro:~$ sudo sh
sh-2.05b# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin
sh-2.05b# sudo java
sudo: java: command not found
sh-2.05b#
不过,看样子要弄好是要改动很深层的配置文件了。又不想把java的路径直接写到系统的配置文件里面。还是权且在/usr/local/bin下面做一个symbol link吧。
不过还是很想搞清楚sudo的时候到底是怎么回事。 |
|