环境变量的概念
含义:
环境变量一般是指操作系统中指定操作系统运行环境的一些参数。它相当于一个指针,想要查看变量的值,需要加上“$”。
分类:
按作用的范围分类:在Linux中的变量,可以分为环境变量和本地变量:
1)环境变量:相当于全局变量,存在于所有的Shell中,具有继承性;
2)本地变量:相当于局部变量只存在当前Shell中,本地变量包含环境变量,非环境变量不具有继承性。
按生存周期分类:
1)永久:需要修改配置文件,变量永久生效;
2)暂时:使用export定义,关闭Shell后失效。
环境变量的组织方式
每个程序都有一张环境表,环境表是一个字符指针数组,每个指针指向一个以‘\0’结尾的环境字符串。Main函数的第三个参数就是环境表地址。
常见的环境变量
PATH :该变量指定命令的搜索路径
例子:
从中可以看出,在当前目录下,PATH的值。它表示在当前目录下执行的每一条指令的搜索路径,每个目录以冒号隔开。当执行一条指令时,系统就会从系统文件中去寻找,找到了就执行;否则不执行。
HOME :该变量指定用户的主工作目录,即用户登录到Linux系统时,默认的目录。
分为普通用户下的主工作目录、超级用户下的主工作目录
HISTSIZE :该变量指定保存历史命令的数目
例子
LOGNAME :该变量指定显示用户的登录名
例子
SHELL :该变量指定用户当前使用的解析器。
例子:
修改和显示环境变量的命令
echo
该命令用于显示某个环境变量的值。
env
该命令指定显示所有的环境变量和值。
例子:
set :该命令指定本地变量
export :该命令指定设置一个新的环境变量
例子:
unset :该命令指定清除环境变量
例子:
通过代码获取环境变量:
例子:
命令行第3个参数是环境表地址,是一个字符型数组指针。
运行结果:
通过系统调用获取或设置环境变量
通常用getenv和putenv函数来访问特定的环境变量,而不是用environ变量。但是,如果要查看整个环境,则必须使用environ指针。
例子:
结果:
例子:
结果:
“export MY_ENV=Love”导出环境变量,可以被子程序继承下去;而“MY_ENV=Love”导出的是普通变量,不具有继承性(与getenv函数一样)