基本概念
我们在编写 C/C++ 代码的时候,在链接的时候,从来不知道我们所链接的动态静态库在哪里,但是照样可以链接成功,生成可执行的程序,原因就是有相关环境变量帮助编译器进行查找。
环境变量一把是指在操作系统中用来指定操作系统运行环境的一些参数,环境变量通常是具有某些用途,还有在系统中通常具有全局特性;
常见环境变量
PATH:指定命令的搜索路径;
HOME:指定用户的主工作目录(即用户登陆到Linux系统中时,默认的目录);
SHELL:当前Shell,它的值通常时/bin/bash;
查看环境变量的方法
echo $NAME //NAME:环境变量名称
环境变量相关命令
env //显示所有环境变量
echo $PATH //打印PATH变量的内容
set //显示本地定义的shell 变量和环境变量
export //设置 / 声明环境变量
unset //删除环境变量
环境变量的组织方式
每个程序都会收到一张环境表,环境表是一个字符指针数组,每个指针指向一个以 ’/0‘ 结尾的环境字符;
通过代码获取环境变量
1、命令行的第三个参数
#include<stdio.h>
int main(int argc,char* argv[],char* env[]){
int i = 0;
for(;env[i];i++){
printf("%s\n",env[i]);
}
return 0;
}
2、通过第三方变量 environ 获取
#include<stdio.h>
int main(int argc,char* argv[]){
extern char** environ;
int i = 0;
for(;enciron[i];++i){
printf("%s\n",environ[i]);
}
return 0;
}
libc 中定义的全局变量 envrion 指向环境变量表,environ 没有包含在任何的头文件中,所以在使用的时候要用 extern 声明;