现在在编写一个脚本,希望在root用户下收集oracle用户下的一些信息,但是发现在脚本中切换用户执行命令会出现环境变量问题。 [root@oracle01 ~]# su - oracle -c "$ORACLE_HOME/OPatch/opatch lsinventory" -bash: /OPatch/opatch: No such file or directory [root@oracle01 ~]# su - oracle -c "echo $ORACLE_HOME" [root@oracle01 ~]# 如上面的命令所示,ORACLE_HOME是个空。 oracle用户下确实设置了环境变量,但是使用su - oracle -c "echo $ORACLE_HOME"这种样子查看时却显示该变量为空。 要如何才能在切换oracle用户后正确使用$ORACLE_HOME变量呢? [root@oracle01 ~]# su - oracle Last login: Wed Mar 13 16:20:05 CST 2024 on pts/0 [oracle@oracle01 ~]$ cat ~/.bash_profile ...省略一些输出 export ORACLE_BASE=/u01/app/oracle export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1 ...省略一些输出 [oracle@oracle01 ~]$ echo $ORACLE_HOME /u01/app/oracle/product/11.2.0/db_1 [oracle@oracle01 ~]$ exit logout [root@oracle01 ~]# [root@oracle01 ~]# su - oracle -c "env|grep ORACLE_HOME" ORACLE_HOME=/01/app/oracle/product/11.2.0/db_1 [root@oracle01 ~]# su - oracle -c "echo $ORACLE_HOME" [root@oracle01 ~]#