【发布时间】:2012-04-16 22:14:59
【问题描述】:
这里我写了一个 C 程序,它使用 system 调用来执行 hi.sh 文件。
这里我使用了. ./hi.sh,所以我想在同一个shell中执行这个脚本
然后尝试使用 getenv 函数获取环境变量,但在这里我得到的输出与我的预期不同。
hi.sh 文件包含
export TEST=10
return
意味着当我使用系统调用运行这个hi.sh 文件时,它的export TEST 在同一个shell 中将值设置为10。
在此之后,我试图获取这个变量值,但它给定了NULL 值。
如果我从. ./hi.sh 之类的控制台手动运行此脚本,那么它工作正常,我使用getenv("TEST") 函数得到TEST 的10 个值。
代码:
#include <stdio.h>
int main()
{
system(". ./hi.sh");
char *errcode;
char *env = "TEST";
int errCode;
errcode = getenv(env);
printf("Value is = %s\n",errcode);
if (errcode != NULL) {
errCode =atoi(errcode);
printf("Value is = %d\n",errCode);
}
}
输出:
Value is = (null)
如何在程序 shell 中导出 TEST 变量?如果system() 在不同的shell 中执行命令,那么我如何使用C 程序代码获取由system() 调用调用的shell 导出的环境变量?
【问题讨论】: