环境变量

it2025-09-06  5

环境变量(p49)

在操作系统中用来指定操作系统运行环境的一些参数本质:字符串格式:名=值[:值],多个值用:号隔开值用来描述进程环境信息存储形式:char*[]数组,数组名:environ,内部存储字符串,NULL结尾引入环境变量表:声明环境变量:extern char**environ;PATH变量中保存了可执行文件的搜索路径,使用“:”隔开解释当前所使用的命令解释器:echo $SHELL查看家目录:echo $HOME查看所使用的语言:echo $LANG

在命令终端访问环境变量:

查看:echo $变量名定义:变量名=变量值删除:unset 变量名

在c语言中:

获取环境变量: #include<stdlib.h> char *getenv(const char* name); 成功:返回一个指向环境变量的指针,失败:返回NULL 改变或增加一个环境变量: int setenv(const char* name,const char*value,int overwrite); overwrite:0时不覆盖,非0时覆盖 成功:返回0,失败:返回-1 改变或增加环境变量: int putenv(char*string); string:要改变或增加的环境变量表达式 成功:返回0,失败:返回-1 删除一个环境变量: void unsetenv(const char*name); 注意:无此name时不会报错,不符合命名规则时报错 成功:返回0,失败:返回-1 代码1:遍历当前进程的环境变量 #include<stdio.h> #include<stdlib.h> #include<unistd.h> extern char **environ; int main() { for(int i = 0;environ[i] != NULL;i++) { printf("environ[%d] = %s\n",i,environ[i]); } return 0; } 代码2:获取环境变量,创建环境变量 #include<stdio.h> #include<stdlib.h> int main() { const char *name = "USER"; char *get = getenv(name); if(get != NULL) { printf("getenv = %s\n",get); } else { printf("没有环境变量\n"); } const char *name1 = "creat_env"; int set = setenv(name1,"zjl-xwa",1); if(set == 0) { printf("环境变量创建成功\n"); } else { printf("环境变量创建失败!!!\n"); } char *getname = getenv(name1); if(getname != NULL) { printf("新的环境变量是 : %s\n",getname); } else { printf("没有环境变量\n"); } int del_env = unsetenv(name1); { if(del_env == 0) { printf("%s:变量删除成功\n",name1); } else { printf("%s:变量删除失败\n",name1); } } }
最新回复(0)