Linux-环境变量的设置、查看和测试

  • Post author:
  • Post category:linux





1.基本概念

环境变量:

一般是指在操作系统中用来指定操作系统运行环境的一些参数

例如:我们在编写C/C++代码的时候,在链接的时候,从来不知道我们的所链接的动态静态库在哪里,但是照样可以链接成功,生成可执行程序,原因就是有相关环境变量帮助编译器进行查找。


常见的环境变量

  • PATH:保存了可执行程序的搜索路径(其中各个路径之间采用

    :

    符号来分隔)
  • SHELL:保存了命令行解释器的名称(Linux中为BASH,一般在

    /bin/bash

    目录下)
  • HOME:指定保存了当前目录的家目录


碎片知识:使用

which + [命令]

可以查看该命令的路径



2.查看环境变量


  • echo $[环境变量]

    :可以查看该环境变量所在的路径

例如:查看环境变量BASH的路径

在这里插入图片描述


  • env

    :查看操作系统中所有的环境变量(以键值对的形式存在)

在这里插入图片描述



3.设置环境变量

首先每次设置环境变量的时候都有一个

固定的范式




export [环境变量的名称] = $[环境变量名称] : [新增路径]

例如,要添加PATH的路径到当前路径下

在这里插入图片描述

但是,这里设置的环境变量只是临时生效的,也就是说环境变量的设置有临时生效和永久生效两大类


1. 临时生效

export命令执行在了当前命令行中,只会在当前终端中生效。


2.永久生效

  • 将export命令写到

    ~/.bashrc



    ~/.bash_profile

    文件中去,这两个文件都是环境变量文件
  • 在写入到上面文件中后,要采用

    sourc ~/.bashrc



    sourc ~/.bash_profile

    中重新加载环境变量文件即可


当打开一个新的终端时,就会读取环境变量文件中的内容,只有写到上面提到的两个文件中去,每次在启动终端的时候,都会被加载进去。



4. 环境变量的代码验证

首先,我们都知道在C语言程序中,main函数一直都有对应的参数,如:


int main( int argc, char* argv[], char* env[] )

  • int argc:保存着命令行参数的个数
  • char* argv[ ]:是一个指针数组,数组中的每一个元素都是char* ,他保存着具体的命令行参数的内容
  • char* env[ ]:保存着环境变量的具体内容,需要知道的是他的组织格式是该数组最后的位置永远都保存着NULL

在这里插入图片描述

每个程序都会收到一张环境表,环境表是一个字符指针数组,每个指针指向一个以’\0’结尾的环境字符串


代码测试:

代码如下:

在这里插入图片描述

运行结果如下:

在这里插入图片描述

可见,argc在计算命令行参数的时候会将自己也计算在内



5.通过代码获取环境变量


  • 上面刚说过的

    char* env[]

    方法

  • 通过

    getenv

    函数获取特定的环境变量的值

  • 通过

    environ

    参数进行获取环境变量的值

其中:


char * getenv(const char * name);

  • name:为环境变量的名称
  • 返回环境变量的值
  • 头文件为:<stdlib.h>


extern char ** environ;

  • environ参数是C库中定义的
  • libc中定义的全局变量environ指向环境变量表,environ没有包含在任何头文件中,所以在使用时 要用extern声明。
  • extern的头文件为:<unistd.h>




版权声明:本文为weixin_43937101原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。