手机版
你好,游客 登录 注册 搜索
背景:
阅读新闻

Linux下su与su -命令的区别

[日期:2018-08-31] 来源:Linux社区  作者:asheng2016 [字体: ]

susu -都是用来切换用户的命令,简单说它们之间的区别就是:su -切换的干净彻底,而su
切换用户却拖泥带水。

su

su username,切换到指定用户,但是当前目录不会变化,环境变量还是上一个用户的环境变量。

su -

su - username,切换到指定用户,当前目录即刻切换成指定用户的家目录,即~环境变量
即刻切换到指定目录的环境变量。

测试环境

测试环境是CentOS6.9_64位,系统中有两个用户linuxidc和root

oldboy的环境变量和家目录如下

[linuxidc@linuxidc~]$ echo ~
/home/linuxidc
[oldboy@linuxidc~]$ echo $PATH
/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/linuxidc/bin
[oldboy@linuxidc~]$

root用户的环境变量和家目录如下

[root@linuxidc~]# echo ~
/root
[root@linuxidc~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
[root@linuxidc~]#

测试效果

root -> linuxidc (su -)

[root@linuxidc~]# pwd && echo $PATH
/root
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
[root@linuxidc~]# su - linuxidc
[oldboy@linuxidc~]$ pwd && echo $PATH
/home/linuxidc
/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/linuxidc/bin

oldboy -> root (su -)

[linuxidc@linuxidc~]$ pwd && echo $PATH
/home/linuxidc
/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/linuxidc/bin
[oldboy@linuxidc~]$ su - root
Password:
[root@linuxidc~]# pwd && echo $PATH
/root
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

root -> linuxidc (su)

[root@linuxidc~]# pwd && echo $PATH
/root
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
[root@linuxidc~]# su linuxidc
[oldboy@linuxidc/root]$ pwd && echo $PATH
/root
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

linuxidc -> root (su)

[linuxidc@linuxidc~]$ pwd && echo $PATH
/home/linuxidc
/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/linuxidc/bin
[oldboy@linuxidc~]$ su root
Password:
[root@linuxidc/home/linuxidc]# pwd && echo $PATH
/home/linuxidc
/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/linuxidc/bin

结论

切换用户尽量使用su -,干净彻底,符合人类认知。

问题: 一不小心使用su切换了用户,傻傻分不清自己到底用的是哪个环境,怎么办?

解决: 使用su - username 再切换一次,即使自己已经是linuxidc用户,还是可以su - linuxidc
再切换一次,以达到更改操作环境的目的。

[linuxidc@linuxidc~]$ pwd && echo $PATH
/home/linuxidc
/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/linuxidc/bin
[oldboy@linuxidc~]$ su root
Password:
[root@linuxidc/home/linuxidc]# pwd && echo $PATH
/home/linuxidc    # what ? 我的环境乱了
/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/linuxidc/bin
[root@linuxidc/home/linuxidc]# su - root
[root@linuxidc~]# pwd && echo $PATH
/root  # ok 回到了熟悉的环境
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

Linux公社的RSS地址:https://www.linuxidc.com/rssFeed.aspx

本文永久更新链接地址https://www.linuxidc.com/Linux/2018-08/153829.htm

linux
相关资讯       su命令  su -命令 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款