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

转载于:https://www.cnblogs.com/asheng2016/p/9350800.html

su 与 su - 区别相关推荐

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

    Linux下su与su -命令的区别 在启动服务器ntpd服务时遇到一个问题 使用 su root 切换到root用户后,不可以使用service命令: 使用 su - 后,就可以使用service命 ...

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

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

  3. su 和su -的区别

    最近在培训linux,讲师让探究下su 和su -的区别,于是就有了本文. 本文的内容取材于互联网,经由本人理解,从新整理而成. su  后面不加用户是默认切到 root su  是不改变当前变量 s ...

  4. linux下su和su - 的区别

    linux使用中常会使用su来切换用户 使用su切换为tom用户 [root@bogon ~]# su tom [tom@bogon root]$ [tom@bogon root]$ pwd /roo ...

  5. Linux中su 和 su -的区别

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

  6. 由su和su -的区别谈学习linux运维方法

    由su和su -的区别谈学习linux运维方法一例 老男孩Linux培训新班刚开始,老男孩发现群里就在讨论这个su和su -的区别,有的同学们说,直接su就可以,有的说必须要su -.有的同学直接发问 ...

  7. Linux 中su 与su - 的区别

    Linux 中su 与su - 的区别 一.区别 Linux 中切换用户的命令是 su 或 su - . su命令和 su - 命令最大的本质区别就是: 前者只切换了root身份 , 但是shell环 ...

  8. 深入理解 sudo 与 su 之间的区别

    深入理解 sudo 与 su 之间的区别 作者: Himanshu Arora 译者: LCTT zhb127 在早前的一篇文章中,我们深入讨论了 sudo 命令的相关内容.同时,在该文章的末尾有提到 ...

  9. Linux中关于 su 和 su - 的区别

    Linux中关于 su 和 su - 的区别 一.切换用户 二.su和su - 1.su 用户名 (不加参数-) 2.su - 用户名 2.我们用man手册查看一下su的详细说明 一.切换用户 我们在 ...

  10. 解析su,su -,sudo的区别

    2019独角兽企业重金招聘Python工程师标准>>> 本人以前一直习惯直接使用root,很少使用su,前几天才发现su与su -命令是有着本质区别的! 大部分Linux发行版的默认 ...

最新文章

  1. python3实现汉字转拼音
  2. matlab内存不足问题
  3. net程序员的iPhone开发-MonoTouch
  4. php微信模板信息发送的代码例子,微信模板消息发送样例
  5. 树莓派lnmp安装mysql_在树莓派上安装 LNMP
  6. 安装虚拟环境virtualenv 适用于windows操作系统
  7. 模电Aus,Uo/Us,童诗白例2.3.3。
  8. oracle中的dbf是什么文件,ORACLE数据库 DBF数据恢复-dbf是什么文件
  9. 登上大别山主景区天堂寨
  10. 使用h5制作一个五子棋游戏
  11. 七进制转十进制java_java基础——Java进制转换
  12. 题注自动带章节编号 and怎样删除Word题注标签和编号间的空格?
  13. 手机网页视频背景自动播放记录
  14. redis的lru原理_Redis的LRU算法
  15. 【高速接口-RapidIO】6、Xilinx RapidIO核仿真与包时序分析
  16. R语言绘图——实用篇 ggplot2绘图
  17. 章鱼网络进展月报 | 2022.8.1-8.31
  18. opencv标定实现总结(圆点,棋盘格和非对称圆点)
  19. 基于项目协同过滤的电子商务推荐系统
  20. 在uni-app中使用彩色的iconfont

热门文章

  1. PAT题目中用到的一些C++便捷函数记录
  2. (16)数据结构-并查集
  3. mysql二进制包安装mysql_基于linux使用mysql二进制包安装mysql
  4. 【C/C++】size_t 数据类型
  5. navigationBar模块未绑定
  6. Linux学习笔记(7)
  7. 感知器分类模型回顾与python实现
  8. Equal-size partition problem
  9. pycharm windows 打开命令行终端terminal
  10. 微信小程序云开发教程-微信小程序的JS高级-全局数据读写