1.环境变量是什么?
环境变量一般是指在操作系统中指定系统运行环境的一些功能性参数。
比如,我们运行程序链接的静态/动态库,不需要知道它的位置也能链接成功,就是因为有相关环境变量帮助我们查找,环境变量可以简化我们的操作。
简化操作实例:
1.我们写个hello.c文件,并gcc出可执行文件
2.测试一下a.out和./a.out
3.为什么直接a.out不能直接响应呢?因为输入命令之后,系统会默认去PATH目录下查找是否有该命令(可执行文件),没有的话就无法执行。
所以需要./来告诉编译器该程序实际所在目录才能执行。
4.将该目录添加到PATH中,这样就利用环境变量实现直接运行了~
环境变量在系统中有全局特性,所有进程都可以获取到。
2.常见环境变量
首先,我们先学会用命令查看环境变量: env(查看全部环境变量) echo $环境变量名字(查看指定环境变量)
PATH : 指定命令的搜索路径
HOME : 指定用户的主工作目录(即用户登陆到Linux系统中时,默认的目录)
SHELL : 当前Shell,它的值通常是/bin/bash。
3.代码获取环境变量
1 #include<stdio.h> 2 #include<stdlib.h> 3 #include<unistd.h> 4 //方法一:使用main函数第三个参数char** env 5 void env1(char *env[]) 6 { 7 int i; 8 for(i=0;env[i]!=NULL;i++) 9 { 10 printf("env:[%s] ",env[i]); 11 } 12 } 13 //方法二: 使用全局变量 char** environ 14 void env2() 15 { 16 extern char **environ; //这是一个全局变量,定义在c库中,使用的时候需要声明 17 int i; 18 for(i=0;environ[i]!=NULL;i++) 19 { 20 printf("env:[%s] ",environ[i]); 21 } 22 } 23 //方法三: 使用getenv()函数 24 void env3() 25 { 26 //char *getenv(const char *name); 27 //通过环境变量的名称获取环境变量的内容 28 //内容通过返回值返回 29 printf("path:[%s] ",getenv("PATH")); 30 } 31 32 int main(int argc,char *argv[],char *env[]) 33 { 34 //env(); 35 return 0; 36 }
4.和环境变量相关的命令
export : 设置/转换/添加一个环境变量
unset : 删除一个环境变量
5.环境变量原理
每个程序都有一张环境表,环境表是一个字符指针数组,表以NULL结尾,每个环境字符串是以' '结尾。