环境变量
环境变量是指在操作系统中用来指定操作系统运行环境的一些参数,它具有某些特殊用途,通常在系统中具有全局性。
例如:在编程C语言代码,在链接的时候,我们从来没有关心过程序所链接的动态库静态库在哪里,但是却可以连接成功,这就是因为有相关的环境变量帮助编译器查找库。
查看环境变量的方法:echo $NAME //NAME环境变量的名字
常见的环境变量:
PATH:存放系统搜索指定的二进制程序的路径,依次在路径找,找不到就报错
Linux里的命令也是程序,./a.out中的./是指当前目录。那为什么我们的程序需要指定当前目录,而系统的指令不需要带路径呢?这就是因为环境变量PATH了。
1. 将文件拷贝到PATH中指定的目录下(污染指令集,不建议使用)
2. 将文件的目录放到PATH里export PATH=$PATH:程序所在目录 (export导出环境变量)测试PATH:
#include<stdio.h>
int main()
{
printf("Hello, world\n");
return 0;
}
2. HOME:保存当前用户的主工作目录,因为人的不同,让工作目录不同 ~
测试HOME:
可以发现root用户和普通用户的主工作目录是不同的,cd ~就是进入当前用户的主目录。
3. HISTSIZE:系统默认记录输入的命令的个数 (也可以使用命令:history | wc -l
查看)
4. SHELL:/bin/bash 当前shell使用的bash
可以看到系统默认记录输入命令的个数是1000,系统的shell是bash
查看环境变量的其他方法:
每个程序都有一个环境表,环境表是一个字符指针数组,每个指针指向一个以’\0’结尾的环境字符串
- env显示所有的环境变量
- main函数中的env
- 通过第三方变量environ获取
- 通过系统调用getenv
其他命令:
1. env只是输出环境变量
2. set除了显示环境变量,还可以输出本地变量
3. export把本地变量导出环境变量
4. unset取消环境变量
环境变量具有全局属性
直接运行,不能出现结果,说明环境变量不存在。执行了export MYENV="hello world"
之后,发现结果有了,说明环境变量是可以被子进程继承下去的。
如果不加export导出环境变量,只执行MYENV="123"
,那么它就是一个本地变量,本地变量不能给子进程使用,环境变量可以。