Linux中shell和⼦shell⼀点点理解
Linux执⾏脚本有两种⽅式,主要区别在于是否建⽴⼦shell
1、像sh,bash,./命令是⽤来执⾏shell脚本的,在bash/sh命令下,脚本⽂件可以⽆"执⾏权限",即没有rwx中的x权限。⽽对于./命令,脚本⽂件必须要有执⾏权限。
创建⼦shell,在当前bash环境下再新建⼀个⼦shell执⾏脚本中的命令⼦shell继承⽗shell的变量,但⼦shell不能使⽤⽗shell的变量,除⾮使⽤export声明为环境变量
⼦Shell从⽗Shell继承得来的属性如下:
当前⼯作⽬录
环境变量
标准输⼊、标准输出和标准错误输出
linux执行shell命令
所有已打开的⽂件标识符
⼦Shell不能从⽗Shell继承的属性:
除环境变量和.bashrc⽂件中定义变量之外的Shell变量
2、source和.执⾏⽂件不会⽣成⼦shell
不创建⼦shell,在当前shell环境下读取并执⾏脚本中的命令,相当于顺序执⾏脚本⾥⾯的命令