su 与 su - 区别
su与su -都是用来切换用户的命令,简单说它们之间的区别就是: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 - 区别的更多相关文章
- su su- sudo的区别
linux su命令参数及用法详解(linux切换用户命令) su的作用是变更为其它使用者的身份,超级用户除外,需要键入该使用者的密码 linux su 命令 建议大家切换用户的时候 使用 su ...
- su和su - 的区别
Linux中切换用户的命令是su或su -.前天我在使用useradd这个命令时,才体会到这两者的本质区别.如图: 我首先是用su命令切换到root身份的,但是运行useradd时,出现错误:bash ...
- shell切换用户执行后面语句 su与su -的区别
关于su和su -的区别,切换用户是可以使用su tom或者su - tom来实现,但是两者有区别,su只是切换身份,但shell环境仍然是原用户的shell,su -是连用户的shell环境一起切换 ...
- Linux 系统中用户切换(su user与 su - user 的区别)
1. Linux系统中用户切换的命令为su,语法为: su [-fmp] [-c command] [-s shell] [--help] [--version] [-] [USER [ARG]] 参 ...
- Linux下su与su -命令的区别
在启动服务器ntpd服务时遇到一个问题 使用 su root 切换到root用户后,不可以使用service命令: 使用 su - 后,就可以使用service命令了. 原因: su命令和su -命令 ...
- 【转】(总结)Linux下su与su -命令的本质区别
原文网址:http://www.ha97.com/4001.html 本人以前一直习惯直接使用root,很少使用su,前几天才发现su与su -命令是有着本质区别的! 大部分Linux发行版的默认账户 ...
- 关于su和su -的区别
关于su和su -的区别,切换用户是可以使用su tom或者su - tom来实现,但是两者有区别,su只是切换身份,但shell环境仍然是原用户的shell,su -是连用户的shell环境一起切换 ...
- su;su -;sudo;sudo -i;sudo su;sudo su - 之间的区别
今天我们来聊聊su;su -;sudo;sudo -i;sudo su;sudo su -他们之间的区别. su :su 在不加任何参数,默认为切换到root用户,但没有转到root用户家目录下,也就 ...
- Linux下su 与 su - 区别
Linux中切换用户的命令是su或su -.su命令和su -命令最大的本质区别就是:前者只是切换了root身份,但Shell环境仍然是普通用户的Shell:而后者连用户和Shell环境一起切换成ro ...
- 深入理解 sudo 与 su 之间的区别【转】
深入理解 sudo 与 su 之间的区别 两个命令的最大区别是: sudo 命令需要输入当前用户的密码,su 命令需要输入 root 用户的密码.另外一个区别是其默认行为.sudo 命令只允许使用提升 ...
随机推荐
- 我的vim 自动实例括号函数
不废话,直接上代码: """"""""""""""" ...
- adb not responding的解决方案
查看谁占用了进程:netstat -aon|findstr "5037" 终止占用的进程: 假若"6908"占用了进程 taskkill /pid 6908 / ...
- 02 观察 mysql 周期性变化
()首先写一个shell 脚本 vim mysql_status.sh 脚本如下: #!bin/bash while true do mysqladmin -urooy ext|awk '/Queri ...
- 10个网页设计师必备的CSS技巧(转)
英文原文:10 Essential CSS Rules for Web Designers CSS是网页设计师的基础,对CSS的了解能使他们能够设计出更加美观别致的网页.使用CSS技巧来巧妙地处理CS ...
- php -- PDO异常处理
异常处理: PHP:默认为直接报错 MYSQL:默认为静默模式,错就错,不报错 PDO:默认为静默模式,错就错,不报错 以前,当PHP碰到错误的时候,会直接报错,错误处理会变得相当麻烦.后来,当错误发 ...
- MySQL的innodb_flush_log_at_trx_commit配置值的设定
MySQL的innodb_flush_log_at_trx_commit配置值的设定 mysql的配置文件中innodb_flush_log_at_trx_commit的默认值是1,修改成0或者2,速 ...
- js数字格式化(加千分位逗号)
需求:当金额大于10000时,在作展示的时候,需要加千分位逗号,就是每隔1000要用逗号分隔: 方法一:使用toLocaleString()方法 此方法和toString()方法的区别看这里 < ...
- LR的响应时间与使用IE所感受时间不一致的讨论(摘抄补充)
http://www.51testing.com/html/33/564333-865629.html 在做性能测试时,有时碰到这样一种情况,使用性能工具LR测试出来的响应时间比实际使用IE感受到的时 ...
- 在CentOS上安装Java环境
如何使用yum方式在CentOS上安装Java环境,系统以CentOS6.4为例. 工具/原料 Java JDK yum库 CentOS6.4 方法/步骤 1 查看CentOS自带JDK是否已安装. ...
- 编程之美 set 13 光影切割问题
题目 给出几条线段, 求解这几条线段把给定平面切成的份数 思路 1. 枚举 3 条直线的情况, 发现有规律可循 两条直线, 一个交点 -> 空间分成 4 份 三条直线, 两个交点 -> 空 ...