Shell腳本中調用另一個腳本的方法

 在Linux平臺上開發,常常會在console(控制檯)上執行另一個腳本文件,常常用的方法有:./my.sh 或 source my.sh 或 . my.sh;這三種方法有什麼不一樣呢?咱們先來了解一下在一個shell腳本中如何調用另一個shell腳本,其方法有 fork    exec    source。linux

一、fork  ( /directory/script.sh) :shell

若是shell中包含執行命令,那麼子命令並不影響父級的命令,在子命令執行完後再執行父級命令。子級的環境變量不會影響到父級。繼承

fork是最普通的, 就是直接在腳本里面用/directory/script.sh來調用script.sh這個腳本. 運行的時候開一個sub-shell執行調用的腳本,sub-shell執行的時候,parent-shell還在。ip

sub-shell執行完畢後返回parent-shell. sub-shell從parent-shell繼承環境變量.可是sub-shell中的環境變量不會帶回parent-shell開發

二、exec (exec /directory/script.sh):console

執行子級的命令後,再也不執行父級命令。編譯

exec與fork不一樣,不須要新開一個sub-shell來執行被調用的腳本.  被調用的腳本與父腳本在同一個shell內執行。可是使用exec調用一個新腳本之後, 父腳本中exec行以後的內容就不會再執行了。這是exec和source的區別變量

三、source (source /directory/script.sh):方法

執行子級命令後繼續執行父級命令,同時子級設置的環境變量會影響到父級的環境變量。腳本

與fork的區別是不新開一個sub-shell來執行被調用的腳本,而是在同一個shell中執行. 因此被調用的腳本中聲明的變量和環境變量, 均可以在主腳本中獲得和使用.

以上三種就是調用shell腳本的不一樣方法,./my.sh便是fork的方法,source my.sh和. my.sh(點加空格加腳本文件)既是source的方法。

在linux系統上,搭建嵌入式開發平臺,在交叉編譯代碼以前,都須要執行腳本設置環境變量,切記須要使用sourc 或 點的方式執行shell腳本,緣由如上。

相關文章
相關標籤/搜索