基本概念
- 环境变量(environment varriables)一般是指在操作系统中用来指定操作系统运行的一些参数
- 比如在编写c/c++代码时,在链接的时候,从来都不知道所链接的静态库动态库在哪,但是照样可以链接成功,生成可执行程序,还有当我们在Linux下任意目录执行ls命令时,都可以正常执行,ls无非也是一个可执行程序,但是我们自己写的可执行程序为什么要加 ./ ?而不能像ls那样不用加 ./ ,原因很简单,因为要个操作系统提供这个可执行程序的路径,不然操作系统找不到这个文件,那就很奇怪,为什么ls不用加?原因就是相关环境变量帮助编译器进行查找,也就是说,如果把我们自己的可执行程序的路径放在某个环境变量里,那我们就可以像使用ls那样使用我们的a.out,但是不推荐这样做,这样会污染系统的环境变量
- 环境变量通常具有某些特殊用途,在系统当中通常具有全局性
常见的环境变量
- PATH*:指定命令的搜索路径
- HOME*:指定用户的主工作目录(即用户登录到Linux系统时,默认的目录)
- HISTSIZE*:指保存历史命令记录的条数
- SHELL*:当前Shell,他的值通常是/bim/bash
和环境变量相关的命令
- echo 查看某个环境变量
- env 显示所有环境变量
- export 设置一个新的环境变量
- unset 清楚环境变量
- set 显示本地定义的shell变量和环境变量
- char* setenv(const char* name, const cahr* value, int overwrite) 在程序运行时修改环境变量
- char* getenv(const char* name)获取一个环境变量的内容
echo $NAME //NAME指环境变量名称,如下图
env 显示所有环境变量
export 设置一个新的环境变量并用env查看
使用setenv和getenv
#include<stdio.h>
#include<stdlib.h>
int main()
{
char* p = getenv("MYENV");
printf("%s\n", p);
setenv("MYENV", "hello world", 1);
p = getenv("MYENV");
printf("%s\n", p);
return 0;
}
从运行的结果可以看出getenv可以获得环境变量的内容,setenv只在程序运行时修改了环境变量,但是程序结束后环境变量回复原来的内容
unset 清楚环境变量