zoukankan      html  css  js  c++  java
  • su 与 su

    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
  • 相关阅读:
    Objective-C NSFileManager 文件管理总结
    ScrollView在RelativeLayout失效问题
    解决myeclipse中struts2 bug问题包的替换问题
    SOA究竟是个啥
    Flash--元件和实例
    MyEclipse中加入web项目到tomcat
    [C]if (CONDITION)语句中CONDITION的情况
    GTK经常使用控件之笔记本控件( GtkNotebook )
    org.apache.solr.handler.dataimport.DataImportHandlerException: Data Config problem: 对实体 "characterEn
    Android自动测试之Monkey工具
  • 原文地址:https://www.cnblogs.com/asheng2016/p/9350800.html
Copyright © 2011-2022 走看看