fork
- 创建子 shell 进程
父子 shell 进程是相对而言的,它描述了两个 shell 进程的fork关系。
以bash为例,当在bash shell
中执行一个命令时,其实是在当前 bash shell
进程中 fork 出一个子 bash shell 进程,然后在这个子进程中运行相应的命令,当命令执行完成后,这个子进程就被end了。
简单来说,父Shell进程创建子Shell进程时,调用的是 fork()
函数。
在这种情况中:
- 子 shell 进程会继承父 shell 进程中设置的环境变量
- 但是子 shell 进程中设置的环境变量并不会带回父 shell 进程(即不会影响父 shell 进程),以下为证明:
$ export SW="aaa"
$ echo $SW
aaa
$ bash
$ echo $SW
aaa
$ export SW2="bbb"
$ echo $SW2
bbb
$ exit
exit
$ echo $SW2
...