老青菜

Shell 执行文件方式

2014-10-15

shell 脚本文件执行的方式有多种,不同的方式执行文件,得到的结果也是不一样的,主要有下三种方式:

fork

./mytest.sh

fork是最普通的,特点:由当前进程创建一个子进程 sub-shell (对父进程的拷贝),执行完毕后返回 parent-shell

`sub-shell` 从 `parent-shell` 继承环境变量
`sub-shell` 可以使用 `parent-shell` 中的变量,但它不能修改它
`sub-shell` 中的环境变量不会带回 `parent-shell`

source


shell source ./mytest.sh #或者 ../mytest.sh

source方式的特点:不另外创建子进程,而是在当前的的Shell环境中执行。

与fork的区别是不新开一个sub-shell来执行被调用的脚本,而是在同一个shell中执行。

所以被调用的脚本中声明的变量和环境变量, 都可以在主脚本中得到和使用.


exec

exec ./mytest.sh

此方式的特点是:另外创建子进程,但是会终止当前的 shell 执行。

其实我觉得这样理解可能更准确:

.使用`exec`会在当前的进程空间创建一个子进程,
.终止当前进程的执行
.新进程执行完之后,其实两个进程都终止了,也就是这个当前shell进程也就终止了
Tags: Shell
使用支付宝打赏
使用微信打赏

若你觉得我的文章对你有帮助,欢迎点击上方按钮对我打赏

扫描二维码,分享此文章