1 变量根据其作用域分为
- 全局变量 可以在shell进程中使用
- 局部变量 在函数体内使用
- 环境变量 在子进程中使用
在函数内部申明的变量,默认是全局变量,如果只想在内部使用可以使用local关键字修饰。这一点特性和JavaScript中的定义很像。
2 环境变量
环境变量可以被子进程中继承,但是只能向下继承,即子继承父。如下图,当前进程为90053,在执行bash命令后实际上开辟了一个子进程,90540,父进程中有变量a,使用关键字export将其转换为环境变量,则这时候可以被90568中的进程使用,最后使用exit回退到父进程中。
这里需要注意的是:
通过 export 导出的环境变量只对当前 Shell 进程以及所有的子进程有效,如果最顶层的父进程被关闭了,那么环境变量也就随之消失了,其它的进程也就无法使用了,所以说环境变量也是临时的。
3 如果我们需要一个变量在所有shell进程中都有效,那么只能将这个变量写入shell的配置文件中,才能达到这个目的,shell每次启动时候都会执行配置文件中的代码做一些初始化的工作。