首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用sudo和自定义环境变量调用应用程序

使用sudo和自定义环境变量调用应用程序
EN

Server Fault用户
提问于 2018-03-01 15:10:25
回答 2查看 769关注 0票数 0

我需要使用oracle sudo调用sqlplus,通过一行命令明确指定DB (env ORACLE_SID)。通常的方法包括两个步骤:

代码语言:javascript
运行
复制
$ sudo -u oracle -i
$ ORACLE_SID=DBNAME sqlplus / as sysdba

但我需要用一行来做(为了节省时间,合理)。我试着简单地这样做:

代码语言:javascript
运行
复制
$ sudo -u oracle -i ORACLE_SID=DBNAME sqlplus / as sysdba

但是,sqlplus似乎没有看到ORACLE_SID env的变化,并连接到默认DB。此外,我不能排除-i sudo选项,因为我需要确保所有其他环境变量都已完全初始化。

在我的情况下,如何使用sudo和自定义环境变量运行应用程序?

EN

回答 2

Server Fault用户

回答已采纳

发布于 2018-03-16 10:32:28

解决问题的最佳方法是使用以下命令:

代码语言:javascript
运行
复制
sudo -u oracle -i sh -c "ORACLE_SID=DBNAME sqlplus / as sysdba"

如果我们想在一行中直接传递sql脚本:

代码语言:javascript
运行
复制
sudo -u oracle -i sh -c "ORACLE_SID=DBNAME sqlplus / as sysdba" <<-EOF
  SELECT 1 FROM DUAL;
EOF
票数 -1
EN

Server Fault用户

发布于 2018-03-01 15:17:40

尝试以下命令:

代码语言:javascript
运行
复制
sudo -i su - oracle -c 'ORACLE_SID=DBNAME && sqlplus'

解释:

代码语言:javascript
运行
复制
"sudo -i" will take care of the environment variables.
"su - user" will consider the user's environment variables
"-c" -> the command you wish to issue.
票数 0
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/899494

复制
相关文章

相似问题

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