|
我在/etc/profile中,找到了PATH的定义,但并不完全
- pathmunge () {
- if ! echo $PATH | /bin/egrep -q "(^|:)$1($|:)" ; then
- if [ "$2" = "after" ] ; then
- PATH=$PATH:$1
- else
- PATH=$1:$PATH
- fi
- fi
- }
- # Path manipulation
- if [ `id -u` = 0 ]; then
- pathmunge /sbin
- pathmunge /usr/sbin
- pathmunge /usr/local/sbin
- fi
- pathmunge /usr/X11R6/bin after
- unset pathmunge
复制代码
请问PATH的最初定义在哪里?
而且有一点我十分不解。当我以普通用户登陆shell时,PATH的值为
/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/home/tintin/bin
我想PATH变量在运行/etc/profile之前的值应该是/usr/local/bin:/usr/bin:/bin。
根据这个结论和上面的代码,我想root用户登陆时,PATH的值应该是
/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/root/bin
但结果却是/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin
根据pathmunge函数的执行顺序应该是依次执行pathmunge /sbin,pathmunge /usr/sbin,
pathmunge /usr/local/sbin,但是结果却是交叉的。请问为什么会这样?谢谢。 |
|