一、环境变量
-
环境变量一般是指在操作系统中用来指定操作系统运行环境的一些数值参数,例如:系统头文件的加载位置、临时文件位置等
-
环境变量是在操作系统中具有一个特定名字的对象,它里面包含了一个程序或者多个程序所需要用到的信息。例如操作系统中有path环境变量,告诉应用程序执行可执行文件时,系统会去到哪个路径查找
-
用户可以通过设置、获取环境变量、更好地处理运行程序。
环境变量的主要作用:
1、设置程序的运行参数
环境变量相当于给系统、用户、程序设置一些重要的参数,具体起到什么作用与该环境变量相关,例如:设置文件查找路径、用户名信息、文件存储路径等
2、程序共用
比如A软件需要用到B软件的部分功能,但是无论是操作系统、A软件、B软件的作者无法决定它们安装在什么位置,但是A软件需要在开发的时候提供使用B软件的部分功能的功能,这时候可以让B软件设置新的环境变量告诉操作系统它安装在什么路径下,此后A软件就可以通过查询公共的环境变量表得知B软件安装的位置,从而调用B软件的功能
3、系统运行
用户还可以通过设置环境变量告诉操作系统一些特定的运行数值,例如:当前系统的语言、字符编码、终端默认的窗口大小、字体大小等
常见的环境变量:
PS1 # 命令提示符
PATH # 命令程序的搜索路径
C_INCLUDE_PATH # 标准库头文件的搜索路径
LIBRARY_PATH # 库文件的搜索路径
LD_LIBRARY_PATH # 程序执行时动态库的链接路径
查看环境变量:
-
Linux中通过env命令查看当前用户的环境变量
-
Windows中通过set命令查看环境变量
-
在程序中查看环境变量
-
在程序中查看环境变量之前 通过声明
-
// 每个程序运行时,操作系统都会拷贝系统的环境变量表给该程序 名字为environ,该表末尾一定是以NULL结尾 是一个字符串数组
int main(int argc,const char* argv[],const char* environ[])
{
for(int i=0; NULL != environ[i]; i++)
{
printf("%s\n",environ[i]);
}
}
修改环境变量:
1、Linux系统修改
# 1、打开Linux系统配置文件
vim ~/.bashrc #只对当前用户有效
vim /etc/environment # 对所有用户有效
# 2、在文件末尾追加内容,对环境变量进行增删改查
export 环境变量名=<环境变量的值>
exprot 环境变量名=$环境变量名:<追加的环境变量值>
# 3、保存退出后,重新加载配置文件
source ~/.bashrc
2、通过使用标准库函数设置环境变量
环境变量的格式:
name=value
char *getenv(const char *name);
功能:获取name环境变量的值
int putenv(char *string);
功能:以name=value格式设置环境变量的值,如果name不存在则直接添加,如果存在则覆盖原来的value
返回值:成功返回0,失败-1
int setenv(const char *name, const char *value, int overwrite);
功能:通过value值给name环境变量设置,如果不存在也是添加,如果存在是否覆盖要根据overwrite决定
overwrite:当name存在时有意义
0 不覆盖
1 覆盖
int unsetenv(const char *name);
功能:删除环境变量name
int clearenv(void);
功能:清空当前程序的环境变量表
注意:实际上是把char** environ指针置空当做清空处理,所以使用environ之前需要先判断是否是空指针
注意:由于当前程序获得的环境变量表是系统拷贝过来的(副本),因此对其所有操作仅仅是本程序本次运行有效,不会对其它程序造成影响,但是会对子进程有影响