我想在脚本中执行相同的命令外壳CLi
没有脚本的命令shell (CLI)
su - oracle
export ORAENV_ASK=NO
export ORACLE_SID=HRPRD
. oraenv
env | grep ora产出:
甲骨文**LD_LIBRARY_PATH**=/u01/pe/oracle/u/25/bas/lib _ USER=oracle _BASE=/u01/pe/oracle=/var/spool/mail/oracle PATH=/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/u01/pe/oracle/u/25/bas PWD=/oracle =/oracle LOGNAME=oracle *oracle**=/u01/pe/oracle/u/25/USER=oracle/
我的剧本
rr=`su - oracle`
export ORAENV_ASK=NO
export ORACLE_SID=MySID
uu=`. oraenv`
searchOraHome= `env | grep ora`
echo $searchOraHome产出:
oracle_BASE=/u 01/app/oracle PATH=/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/oracle/bin邮件=/var/ USER=oracle /USER=oracle/oracle=/oracle=/oracle LOGNAME=oracle
为什么ORACLE_HOME和LD_LIBRARY_PATH变量没有出现在脚本shell中?
这一行是:
uu=`. oraenv`..。不对?
发布于 2020-01-28 16:07:48
如果在backticks (`)中执行一个shell,那么它将在子shell中执行,因此它所设置的所有环境变量都只在子shell中设置,并且在子shell退出时消失。
必须将脚本“源”为
. oraenv没有后排。
发布于 2020-01-28 14:26:18
当您从命令提示符运行脚本时,它接受当前会话中的变量,但是当您使用cron执行它时,我们需要提供变量
因此,差异
发布于 2020-01-28 13:57:19
我从来不喜欢默认的oraenv脚本或coraenv脚本。所以我写了我自己的。我使用grep并从/etc/oratab文件中提取我要寻找的sid以及Oracle主页。然后,我可以设置我想要的任何其他环境变量。例如shell脚本的电子邮件地址、备份目录、我想使用的任何别名等等。Oracle提供的脚本工作正常,我只是想控制设置环境变量的方式。
https://dba.stackexchange.com/questions/258327
复制相似问题