ubuntu linux shell fork, source and exec 调用执行

来源:互联网 发布:jsp和javascript哪个好 编辑:程序博客网 时间:2024/04/23 19:48

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调用

文件有无可执行权限均可

1.2.1 默认文件位于当前工作目录内

$ 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目录内或者文件位于当前工作目录内

$ source filename

2.2 文件位于当前工作目录内

$ source ./filename


3. exec调用

不另外创建子进程,而是替换子进程的镜像到当前进程

子进程结束后也就意味着当前进程结束--不能继续运行其他命令了

文件必须有可执行权限

3.1 默认文件位于系统PATH目录内

$ exec filename

3.2 文件位于当前工作目录内

$ exec ./filename


<The End>


原创粉丝点击