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

切换用户却拖泥带水。

su

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

su -

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

即刻切换到指定目录的环境变量。

测试环境

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

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

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

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

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

测试效果

root -> oldboy (su -)

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

oldboy -> root (su -)

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

root -> oldboy (su)

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

oldboy -> root (su)

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

结论

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

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

解决: 使用su - username 再切换一次,即使自己已经是oldboy用户,还是可以su - oldboy

再切换一次,以达到更改操作环境的目的。

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

su 与 su - 区别的更多相关文章

  1. su su- sudo的区别

    linux su命令参数及用法详解(linux切换用户命令) su的作用是变更为其它使用者的身份,超级用户除外,需要键入该使用者的密码   linux su 命令 建议大家切换用户的时候 使用 su ...

  2. su和su - 的区别

    Linux中切换用户的命令是su或su -.前天我在使用useradd这个命令时,才体会到这两者的本质区别.如图: 我首先是用su命令切换到root身份的,但是运行useradd时,出现错误:bash ...

  3. shell切换用户执行后面语句 su与su -的区别

    关于su和su -的区别,切换用户是可以使用su tom或者su - tom来实现,但是两者有区别,su只是切换身份,但shell环境仍然是原用户的shell,su -是连用户的shell环境一起切换 ...

  4. Linux 系统中用户切换(su user与 su - user 的区别)

    1. Linux系统中用户切换的命令为su,语法为: su [-fmp] [-c command] [-s shell] [--help] [--version] [-] [USER [ARG]] 参 ...

  5. Linux下su与su -命令的区别

    在启动服务器ntpd服务时遇到一个问题 使用 su root 切换到root用户后,不可以使用service命令: 使用 su - 后,就可以使用service命令了. 原因: su命令和su -命令 ...

  6. 【转】(总结)Linux下su与su -命令的本质区别

    原文网址:http://www.ha97.com/4001.html 本人以前一直习惯直接使用root,很少使用su,前几天才发现su与su -命令是有着本质区别的! 大部分Linux发行版的默认账户 ...

  7. 关于su和su -的区别

    关于su和su -的区别,切换用户是可以使用su tom或者su - tom来实现,但是两者有区别,su只是切换身份,但shell环境仍然是原用户的shell,su -是连用户的shell环境一起切换 ...

  8. su;su -;sudo;sudo -i;sudo su;sudo su - 之间的区别

    今天我们来聊聊su;su -;sudo;sudo -i;sudo su;sudo su -他们之间的区别. su :su 在不加任何参数,默认为切换到root用户,但没有转到root用户家目录下,也就 ...

  9. Linux下su 与 su - 区别

    Linux中切换用户的命令是su或su -.su命令和su -命令最大的本质区别就是:前者只是切换了root身份,但Shell环境仍然是普通用户的Shell:而后者连用户和Shell环境一起切换成ro ...

  10. 深入理解 sudo 与 su 之间的区别【转】

    深入理解 sudo 与 su 之间的区别 两个命令的最大区别是: sudo 命令需要输入当前用户的密码,su 命令需要输入 root 用户的密码.另外一个区别是其默认行为.sudo 命令只允许使用提升 ...

随机推荐

  1. shell向python传参数

    想要在shell中调用python脚本时实现: python pyServer.py argu1 argu2 argu3 利用 sys.argv 即可读取到 相应参数: # coding=utf-8 ...

  2. finals的使用

    //----------------------------------------Finals--------------------------- public class Finals { pu ...

  3. 关于为空必填js判断

    为了减少一不必要的if逻辑判断,自已写了一个方法 $(function () { $("#btnAdd").click(function () { var strLinValu = ...

  4. HttpWatch工具简介及使用技巧(转)

    HttpWatch是一个可用于录制HTTP请求信息的工具,由Simtec Limited公司开发,其官网为:Http://www.httpwatch.com,HttpWatch只支持IE和Firefo ...

  5. 小结:双连通分量 & 强连通分量 & 割点 & 割边

    概要: 各种dfs时间戳..全是tarjan(或加上他的小伙伴)无限膜拜tarjan orzzzzzzzzz 技巧及注意: 强连通分量是有向图,双连通分量是无向图. 强连通分量找环时的决策和双连通的决 ...

  6. 一稿设计多端适配优雅的解决方案 - rem

    规范目的 为提高前端团队开发效率,输出高质量的前端页面代码,提高UI设计还原度,特编写该规范文档.本文档如有不对或者不合适的地方请及时提出. JS代码块 (function (doc, win) { ...

  7. 【读书笔记】iOS-ARC-环境下怎样查看引用计数的变化

    一.新建立一个project.用于測试引用计数的变化. 二,找到例如以下路径Build Phases---->Compile Sources---->AppDelegate.m 三,选中A ...

  8. 做一个WINDOWS下破解WIFI。不须要Linux抓包!

    搬家了,没网了. 没有WIFI了! 想破解,只是没有Linux环境,不能抓包!破解! 于是自己动手开工. 在windows 下直接破解.貌似国内 还没看到.假设有了,那么请各位童鞋 提醒一下.赶急 要 ...

  9. 剑指 offer set 21 圆圈中最后剩下的数字

    思路 1. 经典解法是用环形链表模拟圆圈, 然后每次减少一个节点. 时间复杂度为 o(mn), 空间复杂度为 o(n) 2. 转化成数学问题, 递推公式决定下一个元素. 时间复杂度为 o(n), 空间 ...

  10. malloc free, new delete 的异同点

    相同点: 都可以动态的申请并释放内存 不同点: 1. 用法不同 <1> malloc 函数为 void* malloc(size_t size), 用于申请一块长度为 size 字节的内存 ...