一. 概念
操作系统中用来指定操作系统运行环境的一些参数
二. 常见的环境变量
PATH: 指定命令行的搜索路径
HOME: 指定用户的主工作目录
SHELL: 当前shell
三. 查看环境变量的方法
echo $name # name为环境变量的名字`
四. 环境变量的相关命令
# 1. export:设置环境变量(本次登录有效)
export PATH=$PATH:path # path为新加入的路径`
export myval # 将本地变量myval设置为环境变量`
# 2. env:显示所有环境变量
# 3. set: 显示本地定义的shell变量和环境变量
# 4. unset:清除本地变量和环境变量
unset myval # 清除myval这个变量`
五. 通过代码获取环境变量
5.1 主函数参数argc和argv
argc: int argc --> 命令行执行代码时传进参数的个数
argv: char* argv[] --> 保存命令行执行代码时传进所有参数(字符串)
// 测试argc和argv
int main(int argc, char* argv[])
{
if (2 == argc)
{
if (strcmp("-a", argv[1]) == 0)
{
printf("A\n");
}
else if (strcmp("-b", argv[1]) == 0)
{
printf("B\n");
}
else
{
printf("please input -a or -b\n");
}
}
else
{
printf("The number of command line parameters is incorrect!\n");
}
}
5.2 用env获取环境变量
// 1. 用env获取环境变量
int main(int argc, char *argv[], char *env[])
{
// 测试env
int i = 0;
for (; env[i]; i++)
{
printf("%s\n", env[i]);
}
return 0;
}
5.3 用environ获取环境变量
// 2. 用environ获取环境变量
int main()
{
extern char** environ;
int i = 0;
for (; environ[i]; i++)
{
printf("%s\n", environ[i]);
}
return 0;
}
5.4 用getenv获取环境变量
// 用getenv获取环境变量
int main()
{
// char* getenv(const char* name);
printf("PATH --> %s\n", getenv("PATH"));
printf("HOME --> %s\n", getenv("HOME"));
printf("SHELL --> %s\n", getenv("SHELL"));
return 0;
}
六. 环境变量具有全局性
// 验证环境变量的全局性
// 执行两次此代码(对比两次执行的差别)
// 第一次执行执行什么都不用做
// 第二次执行之前在命令行添加一个myval的变量并且赋值,用export添加到环境变量
int main()
{
printf("myval --> %s\n", getenv("myval"));
return 0;
}
上面代码的执行结论是: 代码会读取到新添加进的环境变量的数据,说明环境变量具有全局性。原因是bash是所有进程的父进程,也就是说我们运行代码是bash的一个子进程,子进程会继承父进程的环境变量。