0. shell变量
大致可以分为3种类型:
内部变量:系统提供,不用定义,不能修改,比如$$,$#,$?,$*,$0等
环境变量:系统提供,不用定义,可以修改,当前进程及其子进程中使用,比如PATH,PWD,SHELL等
用户变量 (本地变量):用户定义,可以修改,在当前进程使用,比如var=123等
1. fork调用
由当前进程创建一个子进程,在新的Shell环境下读取并执行filename中的命令
环境变量只能从父进程到子进程单向继承,在子进程中的环境如何变更,均不会影响父进程的环境
1.1 直接使用文件名调用
文件必须有可执行权限
1.1.1 默认文件位于PATH目录内
$ filename
1.1.2 文件位于当前工作目录内
$ ./filename
1.2 sh调用
文件有无可执行权限均可
$ sh filename
1.2.2 文件位于当前工作目录内
$ sh ./filename
1.3 bash调用
文件有无可执行权限均可
1.3.1 默认文件位于PATH目录内或者文件位于当前工作目录内
$ bash filename
1.3.2 文件位于当前工作目录内
$ bash ./filename
2. source调用和"."(点)调用
不另外创建子进程,在当前的的Shell环境下读取并执行filename中的命令
文件有无可执行权限均可
该命令与"."命令等价
source(或点)命令通常用于重新执行刚修改的初始化文档
$ source .profile
or
$ . .profile
2.1 默认文件位于系统PATH目录内或者文件位于当前工作目录内
2.2 文件位于当前工作目录内
$ source ./filename
3. exec调用
不另外创建子进程,而是替换子进程的镜像到当前进程
子进程结束后也就意味着当前进程结束--不能继续运行其他命令了
文件必须有可执行权限
3.1 默认文件位于系统PATH目录内
$ exec filename
3.2 文件位于当前工作目录内
$ exec ./filename
<The End>