环境变量概念
Linux
是多用户多任务的操作系统
每个用户不同的习惯可以配置不同的环境变量
也可以设置进程的环境变量
打印当前进程的所有环境变量
/*
* @file environ.c
* @brief 打印当前进程所有的环境变量
* @version 1.1 无
* @author 北豼
* @date 2022年5月9日
*/
#include <stdio.h>
extern char **environ; //引入环境变量表
int main(void)
{
int i;
for(i = 0; environ[i]; i++) //判断environ[i]是否为NULL,如果不为NULL,就打印输出环境变量
{
printf("%s\n", environ[i]);
}
return 0;
}
运行结果打印输出了当前进程的所有环境变量
常见的环境变量
PATH
第一个是通过shell解释器解释出路径找到这个文件执行
第二个是直接执行文件
SHELL
记录当前使用的命令解释器是哪个
TERM
LANG
使用的语言格式
HOME
当前家目录
getenv —— 获取环境变量
setenv —— 设置环境变量的值
在vim编辑器中!+ 命令
可以暂时离开vim而去执行这条命令
unsetenv —— 删除环境变量name的定义
用一个例子来说明上面的函数使用
/*
* @file getenv.c
* @brief 获取环境变量、设置环境变量的值、删除环境变量
* @version 1.1 无
* @author 北豼
* @date 2022年5月9日
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void)
{
char *val;
const char *name = "ABD";
int ret;
val = getenv(name);
printf("1, %s = %s\n", name, val);
setenv(name, "HELLO BEIPI", 1);
val = getenv(name);
printf("2, %s = %s\n", name, val);
#if 0
ret = unsetenv("ABCDEF");
printf("ret = %d\n",ret);
val = getenv(name);
printf("3, %s = %s\n",name,val);
#else
ret = unsetenv("ABD");
printf("ret = %d\n", ret);
val = getenv(name);
printf("3, %s = %s\n", name, val);
#endif
return 0;
}
当删除了这个环境变量或者没有这个环境变量时返回值也是0,当格式错误时返回-1
/*
* @file getenv.c
* @brief 获取环境变量、设置环境变量的值、删除环境变量
* @version 1.1 无
* @author 北豼
* @date 2022年5月9日
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void)
{
char *val;
const char *name = "ABD";
int ret;
val = getenv(name);
printf("1, %s = %s\n", name, val);
setenv(name, "HELLO BEIPI", 1);
val = getenv(name);
printf("2, %s = %s\n", name, val);
#if 1
ret = unsetenv("ABCDEF");
printf("ret = %d\n",ret);
val = getenv(name);
printf("3, %s = %s\n",name,val);
#else
ret = unsetenv("ABD");
printf("ret = %d\n", ret);
val = getenv(name);
printf("3, %s = %s\n", name, val);
#endif
return 0;
}