【Linux】环境变量

环境变量

环境变量是指在操作系统中用来指定操作系统运行环境的一些参数,它具有某些特殊用途,通常在系统中具有全局性。

例如:在编程C语言代码,在链接的时候,我们从来没有关心过程序所链接的动态库静态库在哪里,但是却可以连接成功,这就是因为有相关的环境变量帮助编译器查找库。

查看环境变量的方法:echo $NAME //NAME环境变量的名字
这里写图片描述

常见的环境变量:

  1. 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’结尾的环境字符串
这里写图片描述

  1. env显示所有的环境变量
  2. main函数中的env
    这里写图片描述
  3. 通过第三方变量environ获取
    这里写图片描述
  4. 通过系统调用getenv
    这里写图片描述

其他命令:
1. env只是输出环境变量
2. set除了显示环境变量,还可以输出本地变量
3. export把本地变量导出环境变量
4. unset取消环境变量

环境变量具有全局属性

这里写图片描述
直接运行,不能出现结果,说明环境变量不存在。执行了export MYENV="hello world"之后,发现结果有了,说明环境变量是可以被子进程继承下去的。
这里写图片描述
如果不加export导出环境变量,只执行MYENV="123",那么它就是一个本地变量,本地变量不能给子进程使用,环境变量可以。

猜你喜欢

转载自blog.csdn.net/wei_cheng18/article/details/80474505