echo $NAME # NAME:你的环境变量名称
#include
int main()
{
printf("hello world!\n");
return 0;
}
export PATH=$PATH:hello程序所在路径
。echo $HOME
,对比差异。cd ~
和pwd
,对应~
和HOME
的关系。每个程序都会收到一张环境表,环境表是一个字符指针数组,每个数组指向一个以 ‘\0’ 结尾的环境字符串。
#include
int main(int argc, char* argv[], char* env[])
{
int i = 0;
for (; env[i]; i++)
{
printf("%s\n", env[i]);
}
return 0;
}
#include
int main(int argc, char* argv[])
{
extern char** environ;
int i = 0;
for (; environ[i]; i++)
{
printf("%s\n", environ[i]);
}
return 0;
}
libc 中定义的全局变量 environ 指向环境变量表,environ 没有包含在任何头文件中,所以在使用时,要用 extern 声明。
putenv
getenv
#include
#include
int main()
{
printf("%s\n", getenv("PATH"));
return 0;
}
常用 getenv 和 putenv 函数来访问特定的环境变量。
#include
#include
int main()
{
char* env = getenv("MYENV");
if (env)
{
printf("%s\n", env);
}
return 0;
}
直接查看,发现没有结果,说明该环境变量根本不存在。
export MYENV="hello world"
。MYENV="hello world"
,不调用 export 导出,再用我们的程序查看,会有什么结果?为什么?