用户登录系统,系统会启动启动一个shell,用户可以在该shell中声明变量,也可以创建并运行shell脚本,
通常,登录的shell是父shell,则在该shell下运行的shell是该shell的子shell,
当子shell运行完毕后,将返回执行该脚本的父shell,从这个点来说,用户可以有多个shell,每个shell都是由父shell创建的
父shell在创建变量的时候,这些变量并不会被其子shell所知,也就是说,变量默认下是私有的,是局部变量。
使用export将变量可导出,使得该shell的子shell都可以使用该变量,这个过程叫做变量输出。
#!/bin/bash
echo $VAR
一开始并没有VAR变量,所以打印是空,后来在shell中定义VAR变量,在此执行脚本则有正常输出
说明VAR被赋值了,
由于在这里的VAR和子shell的VAR都是局部变量,这时候如果在新建一个shell的话,打印依然是空值,
使用export的话就是在当前父shell中定义了一个全局变量,旗下所有子shell都可以使用这个变量,只在当前父shell中有效。
注意:
即便子shell缺失读取到了父shell中的变量,也只是值的传递,如果在子shell中尝试改变var的值,改变的只是var在子shell中的值,父shell中的值是不会受到影响的,