linux下su和su - 的区别

linux使用中常会使用su来切换用户

使用su切换为tom用户

[root@bogon ~]# su tom
[tom@bogon root]$

[tom@bogon root]$ pwd
/root

 

使用su切换回root用户

[tom@bogon root]$ su root
密码:
[root@bogon ~]#pwd

/root

 

使用su - 切换为tom用户

[root@bogon ~]# su - tom
上一次登录:日 8月 26 23:25:13 CST 2018pts/0 上
[tom@bogon ~]$ pwd

/home/tom

使用su - 切换为root用户

[tom@bogon ~]$ su - root
密码:
上一次登录:日 8月 26 23:27:11 CST 2018pts/0 上
[root@bogon ~]# pwd

/root

 

su命令和su -命令最大的本质区别就是:前者只是切换了root身份,但Shell环境仍然是普通用户的Shell;而后者连用户和Shell环境一起切换成root身份了。只有切换了Shell环境才不会出现PATH环境变量错误。su切换成root用户以后,pwd一下,发现工作目录仍然是普通用户的工作目录;而用su -命令切换以后,工作目录变成root的工作目录了。用echo $PATH命令看一下su和su -以后的环境变量有何不同。以此类推,要从当前用户切换到其它用户也一样,应该使用su -命令。

 

用su - 切换后,环境变量就不同了:

[root@bogon ~]# su - tom
上一次登录:日 8月 26 23:42:04 CST 2018pts/0 上
[tom@bogon ~]$ echo $PATH
/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/usr/local/python3/bin:/home/tom/.local/bin:/home/tom/bin
[tom@bogon ~]$ su - root
密码:
上一次登录:日 8月 26 23:41:41 CST 2018从 192.168.16.55pts/0 上
[root@bogon ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/python3/bin:/root/bin
[root@bogon ~]#

 

posted on 2017-05-24 16:52  lucaq  阅读(321)  评论(0编辑  收藏  举报

导航