我有一个C程序,它打印每个环境变量,其名称由stdin给出。它打印$PATH、$USER等变量,但看不到我自己在Linux shell中定义的环境变量……例如,在bash中我定义了my=4,当我输入"my“时,我希望程序返回4。
int main () {
char * key = (char * )malloc(30);
scanf("%s", key);
if(getenv(key) != NULL)
printf("%s\n", getenv(key));
else
printf("NULL\n");
return 0;
}我能做些什么来提高getenv的结果?我想让它显示所有的环境变量以及从Linux shell继承的所有内容。谢谢。。
发布于 2011-03-23 16:09:30
有几种方法:
my=4; export my; ./programmy=4 ./programenv my=4 ./program这些方法中的每一种都有相同的效果,但机制不同。
export my=4。这个变量在你的程序运行后保持不变。./program的执行临时设置my环境变量。运行后,my不存在(或具有其原始值)。env程序设置环境变量。这个方法不依赖于任何特定的shell,并且是最可移植的。与方法2类似,此方法临时设置环境变量。事实上,shell甚至不知道my已经设置。发布于 2011-03-23 16:08:04
如果你没有export它,那么它只是一个外壳变量,而不是环境变量。使用export my=4或my=4; export my。
发布于 2011-03-23 16:08:22
这与C或getenv无关。如果您在shell中执行my=4,那么您已经定义了一个本地shell变量。要使其成为环境变量,请执行export my。
https://stackoverflow.com/questions/5402355
复制相似问题