巧合之下,上午提到了su切换用户的问题,之前也是有几个开发朋友问过这个,小记一下:
su 和su -的区别
-
su 只是切换了用户身份,但Shell环境仍然是之前用户的Shell,不带-的su不会读取目标用户的环境配置文件
-
su - 用户和Shell环境一起切换了,会加载目标用户下的环境配置文件,如.bashrc文件
[root ~]# whoami
root
[root ~]# echo $PATH
/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
[root ~]#
不加 -,切换到oracle用户后,PATH变量还跟root一样
[root ~]# su oracle
[oracle root]$ echo $PATH
/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
加 - 后,才是oracle用户自己的PATH变量值
[root@erptest1 ~]# su - oracle
[oracle@erptest1 ~]$ echo $PATH
/opt/app/oracle/product/11.2.0/bin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/home/oracle/bin:/home/oracle/bin:/opt/app/oracle/product/11.2.0/lib:/opt/app/oracle/product/11.2.0/jdk:/opt/app/oracle/product/11.2.0/lib32:/usr/lib64:/opt/app/oracle/product/11.2.0:/opt/app/oracle/product/11.2.0/ctx/lib
[root@erptest1 ~]# echo $ORACLE_HOME
[root@erptest1 ~]#
[root@erptest1 ~]# su oracle
[oracle@erptest1 root]$ echo $ORACLE_HOME
[oracle@erptest1 root]$
[root@erptest1 ~]# su - oracle
[oracle@erptest1 ~]$ echo $ORACLE_HOME
/opt/app/oracle/product/11.2.0
[oracle@erptest1 root]$
文章评论