#include <stdio h>
#include <stdlib.h>
int main(int argc, char *argv[], char *envp[])
{
int i = 0;
while (envp[i] != NULL)
{
if (strstr(envp[i], "SHLVL") != NULL)
printf("%s\n", envp[i]);
i++;
}
setenv("SHLVL", "stackoverflow", 2);
i = 0;
while (envp[i] != NULL)
{
if (strstr(envp[i], "SHLVL") != NULL)
printf("%s\n", envp[i]);
i++;
}
return 0;
}
在这个代码中,SHLVL
是一个现有的环境变量.当我try 使用setenv
更改该变量的值时,它会给出预期的输出.
SHLVL=1
SHLVL=stackoverflow
在另一种情况下: 不存在环境变量的相同代码
int main(int argc, char *argv[], char *envp[])
{
int i = 0;
while (envp[i] != NULL)
{
if (strstr(envp[i], "SHLVL") != NULL)
printf("%s\n", envp[i]);
i++;
}
setenv("arr", "33", 2); // non-exist environmental variable
setenv("SHLVL", "stackoverflow", 2);
i = 0;
while (envp[i] != NULL)
{
if (strstr(envp[i], "SHLVL") != NULL)
printf("%s\n", envp[i]);
i++;
}
return 0;
}
这里的arr
是一个不存在的环境变量.此代码给出的输出为
SHLVL=1
SHLVL=1
我的问题是,不存在的环境变量如何改变这里的输出?这里我用的是GCC编译器.