当使用export命令设置环境变量时,既然export也是一个命令,那么一定也需要创建子进程,完成设置环境变量的任务。但是父子进程的数据是各自独立的(子进程会继承父进程的数据,但是),理论上来说父子进程各自的数据修改是不可见的。那为什么export子进程修改了环境变量表的数据,父进程中的环境变量表也被修改了呢?
其实export命令是一个内建命令,它是由bash进程自己执行的,不需要创建子进程再完成。
除了export命令,还有echo命令也是内建命令:本地变量是只在bash进程中有效的变量,子进程无法获取,因此使用常规命令都无法获取到本地变量,但是使用echo可以获取本地变量,因为echo是内建命令,不需要创建子进程,直接由bash进程自己执行
例如,当我们清空环境变量中的PATH时,大部分命令都无法执行,但是export、echo还可以执行