1.环境变量基本概念
- 环境变量( environment variables )一般是指在操作系统中用来指定操作系统运行环境的一些参数。
- 如:我们在编写 C / C ++代码的时候,在链接的时候,从来不知道我们的所链接的动态静态库在哪里,但是照样可以链接成功,生成可执行程序,原因就是有相关环境变量帮助编译器进行查找。
- 环境变量通常具有某些特殊用途,还有在系统当中通常具有全局特性。
2.常见环境变量
- PATH:可执行程序搜索路径
- HOME:用户的主工作目录
- SHELL:shell,值通常是/bin/bash
- USER:记录当前用户名,协同文件权限判断用户是否具有某文件的读写权限
3.和环境变量相关的命令
3.1 echo:显示某个环境变量值
格式:echo $name
3.2 export
更改环境变量:export PATH = 绝对路径
添加环境变量:export PATH = $ PATH: 绝对路径
注:只能在当前会话临时生效,重启shell会重置;若要永久生效需要更改配置文件/etc/profile。
3.3 env:显示所有环境变量
3.4 unset:清除环境变量
3.5 set:显示本地定义的shell变量和环境变量
4.环境变量的组织方式
每一个可执行程序都会收到一张环境变量表,环境变量表是一个字符指针数组。
5.获取环境变量
5.1 main() 函数传参获取
#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;
}
5.2 第三方变量 environ 获取
#include<stdio.h>
int main(int argc, char *argv[])
{extern char **environ;int i = 0;for(; environ[i]; i++){printf("%s\n", environ[i]);}return 0;
}
5.3 系统调用 getenv 获取
#include<stdio.h>
#include<stdlib.h>
int main()
{ printf("%s\n", getenv("PATH"));return 0;
}
6.环境变量的全局属性
环境变量会被子进程继承,因为子进程会继承父进程的环境变量表。(本地变量不可被子进程继承,只在shell内部有效,除了内建命令)