目录
本地变量的创建
环境变量VS本地变量
认识完了环境变量我们来认识一下本地变量。
本地变量的创建
我们如果直接env是看不到本地变量的,因为本地变量和环境变量都具有独立性,环境变量是系统提供的具有全局属性的变量,都存在bash进程的env表中,而本地变量由于是独立存在的,所以在bash进程中肯定也存在存储本地变量的表,
本地变量是在shell内部自己维护的只给shell自己使用的,操作系统自己要看懂这些本地变量还需要借助bash解释器。
那我们怎么看到呢,使用set指令就可以了,本地变量我们也是自己创建的,也是可以在shell上使用的。
我们平时的创建变量就是在创建本地变量了,如下。
这里切记=前面后面不要有空格,同样本地变量也可以使用echo+$解析,接着set一下看有没有在里面,发现果然变量a,b,c全部成了本地变量了。
那本地变量虽然是独立的,但是可以使用export进行转化成环境变量,但是这个过程实际上没有什么实际意义。
export支持赋值了再转化。
环境变量VS本地变量
环境变量是可以被子进程继承的,下面代码演示证明:
我们首次运行可得这个CODE不是环境变量。
然后我们设置CODE为环境变量,请看。
然后环境变量是可以被解除的,使用unset就可以解除环境变量。
可以看出是子进程code继承了环境变量并解析其中的意思来做了if的判断,而由于本地变量没有被子进程继承到才陷入了死循环。
除了可以使用env环境变量表可以直接查看所有的环境变量,使用指向环境变量表的environ指针也可以间接访问全部的环境变量。
最后,环境变量可以被所有的bash之后的进程看到,所以环境变量具有全局属性,为什么呢,原因如下两点:
1。系统的配置信息,尤其是具有指导性的配置信息,他是系统配置的一种表现
2。进程具有独立性!环境变量可以用来进程间传递只读数据,所以环境变量具有全局性