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>
本文详细介绍了操作系统的环境变量,包括基本概念、如何查看和设置环境变量,以及通过代码验证环境变量的方法。讲解了PATH、SHELL、HOME等常见环境变量,并展示了如何在C语言中访问环境变量。同时,讨论了环境变量设置的临时和永久生效的区别,以及如何在启动新终端时加载环境变量。






1632

被折叠的 条评论
为什么被折叠?



