> 文章列表 > Linux环境变量

Linux环境变量

Linux环境变量

目录

基本概念

常见环境变量

查看环境变量方法

测试HOME

获取环境变量

命令行第三个参数envp

通过第三方变量environ

 系统调用获取或设置(函数)

getenv()

putenv()

补充概念

引例1——export hello

​编辑

引例2——hello1


基本概念

        环境变量(environment variables)一般是指在操作系统中用来指定操作系统运行环境的一些参数
        如:我们在编写C/C++代码的时候,在链接的时候,从来不知道我们的所链接的动态静态库在哪里,但是照样可以链接成功,生成可执行程序,原因就是有相关环境变量帮助编译器进行查找。环境变量通常具有某些特殊用途,还有在系统当中通常具有全局特性

        当我们执行系统配置好的命令的时候,我们输入指令的前面不需要指明路径,系统会自动地查找这条指令,找到就停下 。

      

常见环境变量

  • PATH : 指定命令的搜索路径
  • HOME : 指定用户的主工作目录(即用户登陆到Linux系统中时,默认的目录)
  • SHELL : 当前Shell,它的值通常是/bin/bash。

 

查看环境变量方法

echo $NAME //NAME:你的环境变量名称

 

测试HOME

用root和普通用户,分别执行 echo $HOME ,对比差异

 

获取环境变量

命令行第三个参数envp

#include<stdio.h>
#include <unistd.h>int main(int argc, char *argv[],char *envp[])
{//char *envp[]:指针数组for(int i=0; envp[i];i++){printf("envp[%d]->%s\\n",i,envp[i]);}return 0;
}

 

 

通过第三方变量environ

        libc中定义的全局变量environ指向环境变量表,environ没有包含在任何头文件中,所以在使用时 要用extern声明
#include<stdio.h>
#include <unistd.h>int main(int argc, char *argv[],char *envp[])
{extern char environ;//environ[i] *(environ+i)for(int i=0; environ[i];i++){printf("environ[%d]->%s\\n",i,environ[i]);}return 0;
}

 系统调用获取或设置(函数)

getenv()

 

putenv()

以后补充

补充概念

       本质就是内存级的一张表,这张表由用户在登录系统的时候,进行给特定用户形成属于自己的环境变量表。环境变量中的每一个,都有自己的用途:有的是进行路径查找的,有的是进行身份认证的,有的进行动态库查找的,有的是用来进行确认当路径等等,每一个环境变量都有自己特定的应用场景,每一个元素都是kv的。

       环境变量对应的数据从哪来??系统相关配置文件中读取进来的

引例1——export hello

         我们导入了一个hello到环境变量表内

 

         由此可见环境变量可以被所有相关的子进程继承的——环境变量具有全局性

引例2——hello1

                        未有export定义,其能echo打印,其被bash记录了下来,但是没有被添加到环境变量表内而已,这种变量称做本地变量,本地变量只在shell内部有效,不能被子进程继承;用export导入一下即可