linux默认bash shell, 是一个父shell。要创建一个子shell程序很简单,输入bash就会创建一个新的shell程序,被称为子shell。 子shell也可以再创建一个子shell,要区分是父shell还是子shell,需要ps 查看进程命令。他们的关系如图:
Linux执行Scripts有两种方式,主要区别在于是否建立子shell
1. source filename or . filename
不创建子shell,在当前shell环境下读取并执行filename中的命令,相当于顺序执行filename里面的命令
2. bash filename or ./filename
创建subshell,在当前bash环境下再新建一个子shell执行filename中的命令
子shell继承父shell的变量,但子shell不能使用父shell的变量,除非使用export
【备注:这和命名空间是相似的道理,甚至和c中的函数也有些类似】
参考: https://www.linuxidc.com/Linux/2018-09/154321.htm