大部分Linux发行版的默认账户是普通用户,而更改系统文件或者执行某些命令,需要root身份才能进行,这就需要从当前用户切换到root用户,Linux中切换用户的命令是su或su -,下面就su命令和su -命令最大的本质区别给大家详解一下:

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

打个比方:在普通用户下输入:

$pwd



/home/test
(当前用户目录)



$su
****** (输入密码)



#pwd (再次查看路径)



/home/test
(还是当前用户目录)



但是如果换成su -的话结果如下:



$pwd



/home/test(当前用户目录)



$su
-



****** (输入密码)



#pwd (再次查看路径)



/root (切换到超级用户目录)
小知识点:
环境变量:实际上就是用户运行环境的参数集合,linux是一个都用户操作系统,而且每个用户登陆后,都会有一个专有的运行环境。通常每个用户默认的环境环境都是相同的,而这个默认环境实际上都是一组环境变量的定义,用户可以对自己的运行环境进行定制,其方法就是修改相应的系统环境变量。
常见的环境变量:
PATH 系统路径
HOME 系统根目录
HISTSIZE 保存历史命令记录的条数
LOGNAME 当前用户的登陆名
HOSTNAME 主机的名称,若应用程序要用到主机名的话,通常是从这个变量中获取的
SHELL 当前用户用的哪种shell
LANG/LANGUGE语言相关的环境变量,使用多种语言的用户可以修改此环境变量
MAIL 当前用户的邮件存放目录

su 和 su- 会影响环境变量的更多相关文章

  1. Linux环境变量设置

    修改环境变量PATH 最近为root添加一个环境变量发现sudo su进去没有变化所以总结了一下所有设置环境变量的方法: 查看PATH:echo $PATH 直接在命令行修改,就可以使用,但是只有在当 ...

  2. UNIX下的环境变量--转载

    所有环境变量名都是大写小写,系统会当作shell script自定义变量,而不会当作环境变量 [root@mac-home macg]# echo $path                      ...

  3. Windows不重启就使环境变量修改生效

    以修改环境变量“PATH”为例,修改完成后,进入DOS命令提示符,输入:set PATH=C: ,关闭DOS窗口.再次打开DOS窗口,输入:echo %PATH% ,可以发现“我的电脑”->“属 ...

  4. 不重启使XP环境变量生效

    不重启使XP环境变量生效 http://www.pkghost.cn/wz/sort0185/8874.html 在“我的电脑”->“属性”->“高级”->“环境变量”中增加或修改环 ...

  5. Win7刷新环境变量

    在“我的电脑”->“属性”->“高级”->“环境变量”中增加或修改环境变量后,需重启系统才能使之生效.有没有什么方法可让它即时生效呢? 下面介绍一种方法: 以修改环境变量“PATH” ...

  6. 详解Windows不重启使环境变量修改生效(经典)

    在“我的电脑”->“属性”->“高级”->“环境变量”中增加或修改环境变量后,需重启系统才能使之生效.有没有什么方法可让它即时生效呢?下面介绍一种方法: 以修改环境变量“PATH”为 ...

  7. 添加用户useradd,给用户设置修改密码passwd,修改用户信息usermod,修改用户密码状态chage,删除用户userdel,查询用户及组id,切换用户su,查看当前环境变量env

    useradd 用户名 passwd 用户名,给指定用户设密码 passwd给当前用户设密码 添加一个用户系统会自动在以下文件或目录创建对应用户信息: [root@localhost ~]# grep ...

  8. su对环境变量做了什么

    服务器是ubuntu12.04 用一个账户app,使用su - app得到的环境变量和直接ssh登录的环境变量不同. 导致su - app,无法执行ifconfig su - app 的环境变量 /u ...

  9. Aix6.1下su命令不能切换环境变量的问题

    su是Aix的通用命令,和linux系统下一样,用来切换当前用户.切换用户执行命令使用如下命令: su - $user -c "$command" su -命令区别于su的地方是它 ...

随机推荐

  1. 跟http相关的

    http http 中     请求: 请求行    请求方式   采用协议   版本号     网址    请求头    客户端可以接受数据类型    可以接受语言     可以接受的压缩格式 请求 ...

  2. python直接赋值、深浅拷贝实例剖析

    根据数据类型分为两部分进行剖析: int.str类型      list.tuple.dict类型等 1.  int.str类型 [int类型实例] >>> import copy ...

  3. 大数据学习——修改主机名和ip的映射关系

    vi /etc/hosts 192.168.1.101 itcast

  4. 前端传list,springmvc接收list的方法

    handler: function() { var baseCustomerForm = me.getAddBaseCustomerForm().getForm(); var linkStore = ...

  5. HDU3572:Task Schedule【最大流】

    上了一天课 心塞塞的 果然像刘老师那么说 如果你有挂科+4级没过 那基本上是WF队 题目大意:有时间补吧 思路:给每个任务向每个时间点连边容量为1 每个时间点向汇点连边 容量为机器的个数 源点向每个任 ...

  6. github新建本地仓库,再同步远程仓库基本用法

    github新建本地仓库,再同步远程仓库基本用法 1 mkdir gitRepo 2 cd gitRepo 3 git init  #初始化本地仓库 4 git add xxx  #添加要push到远 ...

  7. linux下rename用法--批量重命名 转

    原文地址:https://www.cnblogs.com/hester/p/5615871.html Linux的rename 命令有两个版本,一个是C语言版本的,一个是Perl语言版本的,早期的Li ...

  8. python(5)- 基础数据类型

    一 int 数字类型 #abs(x) 返回数字的绝对值,如abs(-10) 返回 10 # ceil(x) 返回数字的上入整数,如math.ceil(4.1) 返回 5 # cmp(x, y) 如果 ...

  9. iOS present出一个背景为半透明的试图

    WDKChatRoomViewController *roomVC = [[WDKChatRoomViewController alloc] init]; roomVC.titleStr = [gro ...

  10. tomcat启动提示java.lang.UnsatisfiedLinkError: D:\soft\devTool\apache-tomcat-7.0.57\bin\tcnative-1.dll: C

    https://blog.csdn.net/a274360781/article/details/52411984