Linux中shell和子shell一点点理解
Linux执行脚本有两种方式,主要区别在于是否建立子shell
1、像sh,bash,./命令是用来执行shell脚本的,在bash/sh命令下,脚本文件可以无"执行权限",即没有rwx中的x权限。而对于./命令,脚本文件必须要有执行权限。
创建子shell,在当前bash环境下再新建一个子shell执行脚本中的命令子shell继承父shell的变量,但子shell不能使用父shell的变量,除非使用export声明为环境变量
子Shell从父Shell继承得来的属性如下:
当前工作目录
环境变量
标准输入、标准输出和标准错误输出
所有已打开的文件标识符
子Shell不能从父Shell继承的属性:
除环境变量和.bashrc文件中定义变量之外的Shell变量
2、source和.执行文件不会生成子shell
不创建子shell,在当前shell环境下读取并执行脚本中的命令,相当于顺序执行脚本里面的命令
路漫漫其修远兮,吾将迷途而知返