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


(轉載):

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

1、fork  ( /directory/script.sh) :

  如果shell中包含執行命令,那么子命令並不影響父級的命令,在子命令執行完后再執行父級命令。子級的環境變量不會影響到父級。

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

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

2、exec (exec /directory/script.sh):

  執行子級的命令后,不再執行父級命令。

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

3、source (source /directory/script.sh):

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

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

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

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM