Shell執行腳本


Shell作用是解釋執行用戶的命令,用戶輸入一條命令,Shell就解釋執行這一條,這種方式稱為交互式,但還有另一種執行命令的方式稱為批處理方式,用戶事先寫一個Shell腳本,Shell可以一次把這些命令執行完。

如下例子:

第一種執行方式:chmode+x script.sh

執行過程:

Shell會fork一個子進程並調用exec執行./script.sh這個程序,exec系統調用會把子進程代碼段替換成./script.sh程序的代碼段,exec有一種機制,如果要執行的是一個文本文件,並且第一行Shebang 指定了解釋器,則用解釋器程序的代碼段替換當前進程,並且從解釋器 的_start開始執行,而這個文本文件被當作命令行參數傳給解釋器

 第二種執行方式:

shell執行過程:

1. 交互Shell(bash)fork/exec一個子Shell(sh)用於執行腳本,父進程bash等待子進程sh終 止。
2. sh讀取腳本中的cd ..命令,調用相應的函數執行內建命令(不創建子進程,父進程運行),改變當前工作目錄為上一級目 錄
3. sh讀取腳本中的ls命令,fork/exec這個程序,列出當前工作目錄下的文件,sh等待ls終止。
4. ls終止后,sh繼續執行,讀到腳本文件末尾,sh終止。
5. sh終止后,bash繼續執行,打印提示符等待用戶輸入。

兩種方法執行Shell腳本的效果是相同的,cd ..命令改變的是子Shell的PWD,而不會影響到 交互式Shell。

source ./script.sh或者. ./script.sh命令:

 source或者.命令是Shell的內建命令,這種方式也不會創建子Shell,而是直接在交互式Shell下逐行 執行腳本中的命令。

 


免責聲明!

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



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