我的主目錄中有兩個shell腳本a.sh
和b.sh
。在a.sh我調用b.sh作爲在另一個shell腳本中調用shell腳本的區別
sh b.sh
我也能做到這一點通過以下方式
. b.sh
請告訴我調用之間的差異。
感謝, LinuxPenseur
我的主目錄中有兩個shell腳本a.sh
和b.sh
。在a.sh我調用b.sh作爲在另一個shell腳本中調用shell腳本的區別
sh b.sh
我也能做到這一點通過以下方式
. b.sh
請告訴我調用之間的差異。
感謝, LinuxPenseur
第一種方式:
sh b.sh
創建一個子shell和子shell中運行b.sh。其中一個這樣做的後果是,當你回到a.sh
第二種方法b.sh設置任何環境變量將會完全消失:
. ./b.sh
來源b.sh,因此當b.sh返回時,在b.sh中設置的任何env vars都將對a.sh保持可見。
第二種方法稱爲「採購」,它將腳本拉入並在同一個shell中執行。
您會這樣做的原因有兩個:速度,所以第二個腳本可以在第一個腳本中設置環境變量。通常在運行腳本或程序時,它不能改變調用者的環境。
採購速度更快,因爲它不需要分流和啓動另一個shell進程。你可以看到它在某些系統上用於/ etc/init/rc腳本,但性能差異對於大多數用途可能並不重要。採購腳本時,信號處理也有一些細微之處。
謝謝blueshift – 2011-01-11 04:22:59
完美..感謝ennuikiller :) – 2011-01-11 04:21:39