Linux环境变量

环境变量在操作系统中起到指定运行环境参数的作用,如PATH用于命令搜索路径,HOME指用户主目录。可以通过echo命令查看环境变量,C语言中可以通过main函数的envp参数或全局变量environ访问环境变量。getenv()和putenv()系统调用用于获取和设置环境变量。
摘要由CSDN通过智能技术生成

目录

基本概念

常见环境变量

查看环境变量方法

测试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导入一下即可

 

 

 

 

  • 21
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 16
    评论
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值