同样的用户为什么以不同的方式登陆后它的环境变量不同

guirenwang 2008-07-14 11:59:59
这是我的一个普通用户Bob下的$PATH:
/usr/lib64/qt-3.3/bin:/usr/kerberos/bin:/usr/lib64/ccache:/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/home/Bob/bin
这是我以普通用户Bob登录然后通过su切换到root用户下的$PATH:
/usr/kerberos/sbin:/usr/lib64/qt-3.3/bin:/usr/kerberos/bin:/usr/lib64/ccache:/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/home/Bob/bin
这是我以root用户名登录后得到的环境变量:
/usr/lib64/qt-3.3/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/lib64/ccache:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin
这是我以root用户名登录然后切换到Bob用户下的环境变量
/usr/lib64/qt-3.3/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/lib64/ccache:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin

为什么第二和第三的环境变量不同呢,第一和第四的环境变量不同呢,他们不都是同一用户名登录的?如果说第一和第四的环境变量的不同是由于我们用户的切换上有先后关系的话,那第二和第三又是为什么呢?
...全文
218 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
yangzhifu 2008-07-15
  • 打赏
  • 举报
回复
就是你问的问题,环境变量
注意到了吗?如果使用 su 没有加上 - 的话,那么很多原本使用者的相关设定会继续存在,
这也会造成后来的 root 身份在执行时的困扰。最常见的就是 PATH 这个变数的问题,所以,下次在变换成为 root 时,记得最好使用 su - 喔!
至于在内核中的实现就涉及到系统调用了,具体的的问高手了!
wargrey 2008-07-15
  • 打赏
  • 举报
回复
su - 会读取用户的登陆配置文件,相当于直接登陆
su 则保留当前用户的配置信息
ruihuahan 2008-07-15
  • 打赏
  • 举报
回复
su - 使用本用户环境变量
su 使用原来用户环境变量
dingyilong 2008-07-14
  • 打赏
  • 举报
回复
su - root 和 su root是不同的。
yangzhifu 2008-07-14
  • 打赏
  • 举报
回复
[dmtsai@linux ~]$ su
Password: <==这里输入 root 的密码喔!
[root@linux ~]# env
USER=dmtsai
USERNAME=root
MAIL=/var/spool/mail/dmtsai
LOGNAME=dmtsai
**********************************************************8

[root@linux ~]# exit <==这样可以离开 su 的环境!
[dmtsai@linux ~]$ su -
Password: <==这里输入 root 的密码喔!
[root@linux ~]# env
USER=root
MAIL=/var/spool/mail/root
LOGNAME=root
比较一下就知道了!
guirenwang 2008-07-14
  • 打赏
  • 举报
回复
非常感谢楼上两位的教导,但是能不能告诉我这两种登陆方式的不同是由于什么导致的?
不是都是由一个普通用户切换到超级用户么,这两种登陆方式各有什么好处,在内核中是怎么实现的?

19,613

社区成员

发帖
与我相关
我的任务
社区描述
系统使用、管理、维护问题。可以是Ubuntu, Fedora, Unix等等
社区管理员
  • 系统维护与使用区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧