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

本文详细介绍了Shell脚本的多种调用方式,包括fork、source(或.)、exec等,并阐述了每种调用方式的特点及适用场景。特别强调了环境变量的传递规则,帮助读者更好地理解和掌握Shell脚本的执行流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值