1、 su和su-用法的区别
1)定义su :run a shell with substitute user and group
Change the effective user id and group id to that of USER
-, -l, --login
make the shell a login shell, clears all envvars except for TERM, initializes HOME,SHELL, USER, LOGNAME and PATH
2)su和su-区别
su和su-都可以进行用户的切换,但是su切换时会产生一些问题,用户的环境变量的信息没有全部切换,在此环境中进行操作,有可能产生意想不到的错误,所以必须用su –或者su – 用户名。
以下是使用su切换的结果,用env命令查看,注意红色字体,红色部分就是没有切换的。
[oldboy@niel ~]$ su
Password:
[root@niel oldboy]# env|grep -E "PATH|HOME|SHELL|USER| LOGNAME"
SHELL=/bin/bash
USER=oldboy
PATH=/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/oldboy/bin
HOME=/root
而使用su –root切换的结果如下
[root@niel ~]# env|grep -E "PATH|HOME|SHELL|USER| LOGNAME"
SHELL=/bin/bash
USER=root
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
HOME=/root
总结:生产环境中,必须用su -或者su - 用户名来进行用户的切换,这时标准的切换方式。- 参数表示的含义有环境变量的切换。