在Linux系统中,环境变量是用来定义系统运行环境的一些参数。例如,每个用户不同的家目录(HOME)、邮件存放位置(MAIL)等¹。环境变量的名称一般都是大写的,这是一种约定俗成的规范。以下是一些Linux系统中重要的环境变量:
- HOME:用户的主目录(也称家目录)
- SHELL:用户使用的 Shell 解释器名称
- PATH:定义命令行解释器搜索用户执行命令的路径
- EDITOR:用户默认的文本解释器
- RANDOM:生成一个随机数字
- LANG:系统语言、语系名称
- HISTSIZE:输出的历史命令记录条数
- HISTFILESIZE:保存的历史命令记录条数
- PS1:Bash解释器的提示符
- MAIL:邮件保存路径
环境变量可以分为两类:永久的和临时的。
- 永久的环境变量需要用户修改相关的配置文件,变量永久生效
- 临时的环境变量用户利用export命令,在当前终端下声明环境变量,关闭Shell终端失效
此外,环境变量也可以分为系统环境变量和用户环境变量。系统环境变量对该系统中所有用户都有效,而用户环境变量只对特定的用户有效。
在Linux环境中,getenv
和setenv
是两个用于处理环境变量的函数。
-
getenv
函数用于获取环境变量的值。它接受一个字符串参数(环境变量的名称),并返回一个指向该环境变量值的指针。如果该环境变量不存在,则返回NULL。 -
setenv
函数用于设置环境变量的值。它接受三个参数:环境变量的名称、新的值以及一个整数。如果这个整数为非零值,那么即使环境变量已经存在,新的值也会覆盖旧的值。
下面是一个简单的例子,演示了如何使用这两个函数:
#include <stdio.h>
#include <stdlib.h>
int main() {
// 使用setenv设置一个环境变量
if (setenv("TEST_ENV", "123", 1) == -1) {
perror("setenv");
return 1;
}
// 使用getenv获取刚才设置的环境变量
char *value = getenv("TEST_ENV");
if (value == NULL) {
printf("TEST_ENV not found\n");
return 1;
}
printf("TEST_ENV = %s\n", value);
return 0;
}
在这个例子中,我们首先使用setenv
设置了一个名为TEST_ENV
的环境变量,然后使用getenv
获取并打印出这个环境变量的值。如果一切正常,你应该会看到输出TEST_ENV = 123
。这就是getenv
和setenv
的基本用法。希望这个例子能帮助你理解这两个函数的作用。
在Linux系统中,你可以使用printenv
命令来查看当前的环境变量。如果你想查看某个特定的环境变量,你可以在printenv
后面加上环境变量的名称。例如,如果你想查看PATH
环境变量,你可以使用printenv PATH
命令。
此外,你也可以使用env
命令来查看所有的环境变量。这个命令会列出所有的环境变量,以及它们的值。以下是如何使用这些命令的例子:
# 查看所有的环境变量
printenv
# 查看PATH环境变量
printenv PATH
# 使用env命令查看所有的环境变量
env