首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >oracle oraenv脚本bash

oracle oraenv脚本bash
EN

Database Administration用户
提问于 2020-01-28 10:53:45
回答 3查看 5.1K关注 0票数 0

我想在脚本中执行相同的命令外壳CLi

没有脚本的命令shell (CLI)

代码语言:javascript
复制
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/

我的剧本

代码语言:javascript
复制
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_HOMELD_LIBRARY_PATH变量没有出现在脚本shell中?

这一行是:

代码语言:javascript
复制
uu=`. oraenv`

..。不对?

EN

回答 3

Database Administration用户

发布于 2020-01-28 16:07:48

如果在backticks (`)中执行一个shell,那么它将在子shell中执行,因此它所设置的所有环境变量都只在子shell中设置,并且在子shell退出时消失。

必须将脚本“源”为

代码语言:javascript
复制
. oraenv

没有后排。

票数 2
EN

Database Administration用户

发布于 2020-01-28 14:26:18

当您从命令提示符运行脚本时,它接受当前会话中的变量,但是当您使用cron执行它时,我们需要提供变量

因此,差异

票数 0
EN

Database Administration用户

发布于 2020-01-28 13:57:19

我从来不喜欢默认的oraenv脚本或coraenv脚本。所以我写了我自己的。我使用grep并从/etc/oratab文件中提取我要寻找的sid以及Oracle主页。然后,我可以设置我想要的任何其他环境变量。例如shell脚本的电子邮件地址、备份目录、我想使用的任何别名等等。Oracle提供的脚本工作正常,我只是想控制设置环境变量的方式。

票数 -2
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/258327

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档