1、前言
我们在写shell脚本的时候,打印变量的语法是 echo $变量名
同样,环境变量,也是一个变量,会有值(类似c语言中的变量初始化。。。。)
环境变量:指在操作系统中用来指定操作系统运行环境的一些参数
特征:
1)本质是字符串-------->字符串变量
2)有统一的格式:名=值[:值] ------>多个值的时候后面的值用:隔开(参见PATH的值)。
3)值用来描述环境信息
环境变量的存储形式与命令行类似,char*[]数组,数组名environ,内部存储字符串,NULL结尾,即最后一个字符串为NULL
加载位置位于用户区,高于stack的起始位置,位于接近3G的地址空间的位置;
引入环境变量表:需声明环境变量:extern char **environ;
2、常用的环境变量
可执行程序的路径。不同的路径之间用:隔开;
shell扫描PATH的顺序是从前往后,所以,如果新的路径存有与之前一样的可执行程序时,需要将该路径放在前面,否则就会先搜索到老的版本路径,从而执行老的命令了。
echo $PATH 命令,查看PATH环境变量
echo $SHELL 查看当前shell的版本(命令解析器)
echo $HOME 当前的家目录
echo $LANG 当前用的语言
举例:我们使用ls 命令后,shell解析器是从PATH路径中搜索的,当搜索到/bin中找到了ls命令执行。
打印某个进程的环境变量(因为环境变量是个接近3G的位置,是属于一个进程的。)
#include <stdio.h>
extern char **environ;
int main()
{
int i
for(i = 0;environ[i];i++)
{
printf("%s\n",environ[i]);
}
return 0;
}
环境变量常用的函数
char *getenv(const char *name);
-------------------------------------get an environment variable
int setenv(const char *name, const char *value, int overwrite);
---------------------------setenv - change or add an environment variable
---------------------------overwrite,为1,则覆盖。
int unsetenv(const char *name); //删除环境变量