我有一个C程序打印每个环境变量,其名称由stdin给出.它打印变量,如$ PATH,$ USER,但它没有看到我在Linux shell中定义的环境变量...例如,在bash中我定义了我的= 4,并且我希望程序返回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;
}
Run Code Online (Sandbox Code Playgroud)
我可以做些什么来改善getenv的结果?我想让它向我展示所有环境变量以及Linux shell的所有继承.谢谢..
有两种方法:
my=4; export my; ./programmy=4 ./programenv my=4 ./program这些方法中的每一种都具有相同的效果,但是通过不同的机制.
此方法特定于您正在使用的shell,尽管它在大多数典型的shell中都是这样的(Bourne shell变体; csh派生的shell再次不同).首先设置一个shell变量,然后将其导出到环境变量,然后运行您的程序.在某些shell上,您可以将其缩写为export my=4.程序运行后,变量保持设置状态.
此方法还取决于您的shell.这会暂时为此次执行设置my环境变量.运行后,不存在(或具有其原始值)../programmy
这使用env程序在运行程序之前设置环境变量.此方法不依赖于任何特定的shell,并且是最便携的.与方法2类似,这会临时设置环境变量.实际上,shell甚至都不知道my已经设置好了.
| 归档时间: |
|
| 查看次数: |
3927 次 |
| 最近记录: |