繁体   English   中英

在c中使用popen执行的shell脚本中看不到环境变量

[英]Environment variables not visible in shell script executed using popen in c

有人可以帮忙吗:

我在c程序中使用popen执行shell脚本。 像这样的东西:

fd = popen("script1", "r");

script1代码是这样的:

#!/bin/sh
source script2     #loading another script2

EXE_SOMETHING   #Function call from script2

//Do something....

script2代码是这样的:

#!/bin/sh
function SET_ENV()
{
    oraenv <<-EOF
    SID NAME
    EOF
}

function EXE_SOMETHING()
{
    SET_ENV
    //Executing sql query using sqlplus to get output from database.
}

我的问题是我没有在EXE_SOMETHING中获取由SET_ENV函数设置的env变量,因为我找不到sqlplus命令。

如果要使用oraenv修改当前shell环境,则必须使用oraenv调用它. oraenv . oraenv 否则环境变化将在子shell中进行。

这在Oracle文档中有解释。 另请参阅shell的文档. command,它在当前执行上下文中而不是在子shell中运行脚本。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM