1 变量根据其作用域分为

    1. 全局变量 可以在shell进程中使用
    2. 局部变量 在函数体内使用
    3. 环境变量 在子进程中使用

    在函数内部申明的变量,默认是全局变量,如果只想在内部使用可以使用local关键字修饰。这一点特性和JavaScript中的定义很像。
    2 环境变量
    环境变量可以被子进程中继承,但是只能向下继承,即子继承父。如下图,当前进程为90053,在执行bash命令后实际上开辟了一个子进程,90540,父进程中有变量a,使用关键字export将其转换为环境变量,则这时候可以被90568中的进程使用,最后使用exit回退到父进程中。
    image.png
    这里需要注意的是:

    通过 export 导出的环境变量只对当前 Shell 进程以及所有的子进程有效,如果最顶层的父进程被关闭了,那么环境变量也就随之消失了,其它的进程也就无法使用了,所以说环境变量也是临时的。

    3 如果我们需要一个变量在所有shell进程中都有效,那么只能将这个变量写入shell的配置文件中,才能达到这个目的,shell每次启动时候都会执行配置文件中的代码做一些初始化的工作。