环境变量的基本概念
./a.out 需要带路径
为何系统的程序不用带路径?
查看环境变量(PATH -> 环境变量的名称)
环境变量的本质
OS在内存/磁盘文件中开辟的空间,用来保存系统相关的数据。
环境变量相关的命令
1. echo: 显示某个环境变量值
2. export: 设置一个新的环境变量
3. env: 显示所有环境变量
4. unset: 清除环境变量
5. set: 显示本地定义的shell变量和环境变量
环境变量的组织方式
通过代码获取环境变量
命令行第三个参数
#include <stdio.h>
int main(int argc, char *argv[], char *env[])
{
int i = 0;
for(; env[i]; i++){
printf("%s\n", env[i]);
}
return 0;
}
通过第三方变量environ获取
#include <stdio.h>
int main(int argc, char *argv[])
{
extern char **environ;
int i = 0;
for(; environ[i]; i++){
printf("%s\n", environ[i]);
}
return 0;
}
注:补充C语言知识:函数没有参数也能进行传参
通过系统调用获取或设置环境变量
#include <stdio.h>
#include <stdlib.h>
int main()
{
printf("%s\n", getenv("PATH"));
return 0;
}
常用getenv和putenv函数来访问特定的环境变量。
补充知识
环境变量具有“全局属性”本质:环境变量可以被子进程继承下去
命令行上启动的进程,父进程都是bash。
代码演示
导入环境变量后通过系统调用获取
通过 export my_env_string 将环境变量添加到父进程当中,父进程中多了一个环境变量所以系统调用能够获取。