• 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
  • 相关阅读:
    遍历切片slice,结构体struct,映射map,interface{}的属性和值
    [转]Go语言string,int,int64 ,float之间类型转换方法
    [转] golang中struct、json、map互相转化
    [转]Jupyter默认目录和默认浏览器修改
    sublime text3输出窗口中文显示乱码问题解决方案
    Oracle 在SQL语句中如何获取系统当前时间并进行操作
    eclipse调试的时候怎么后退?
    外部无法访问虚拟机8088和50070端口
    hadoop启动后jps查不到namenode的解决办法
    Java给整数部分的字符串加上千分位分隔符
  • 原文地址:https://www.cnblogs.com/asheng2016/p/9350800.html
Copyright © 2020-2023  润新知