LINUX shell 下面調用腳本的3種方式

在LINUX下, 通過腳本執行一些命令, 通常需要執行好幾個腳本共同完成任務, 這裏的調用有3種方式:

fork方式

這是最常用的方式, 直接通過: /path/xx.sh 就可以啦。
task.sh:

#!/bin/shell

/export/home/baijiwei/run.sh

這裏, task.sh本身啓動了一個進程, 假設進程ID爲10000,它會啓動一個新的shell 來執行run.sh, 假設其進程ID爲10001, 這裏進程10001 繼承了10000所有的環境變量, 但是進程10001 本身的環境變量10000不能使用;
在整個過程, 進程10000 和10001同時存在知道進程10001執行完畢。

exec方式

task.sh:

#!/bin/shell

exec /export/home/baijiwei/run.sh
...

與前面的fork方式類似, 不同點在於: 經過exec啓動的進程, 不會產生新的進程, 而是直接使用task.sh的進程, 但是在run.sh執行結束返回之前, task.sh會一直被block着。

source 方式

task.sh:

#!/bin/shell

source /export/home/baijiwei/run.sh
...

它會爲run.sh新產生一個shell, 而且task.sh可以使用run.sh裏面的變量和環境變量;

通過下面的表格來展示一下他們的異同:

方式 產生子shell 共享sub-shll的變量
fork
exec
source
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章