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 ~/.bashrcsourc ~/.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>

猜你喜欢

转载自blog.csdn.net/weixin_43937101/article/details/115285610