source、sh、bash、./執行腳本的區別

一、source命令用法:html

  source FileNamelinux

  做用:在當前bash環境下讀取並執行FileName中的命令。該filename文件能夠無"執行權限"shell

    注:該命令一般用命令「.」來替代。bash

    如:source .bash_profile函數

        . .bash_profile二者等效。spa

    source(或點)命令一般用於從新執行剛修改的初始化文檔。命令行

    source命令(從 C Shell 而來)是bash shell的內置命令。orm

    點命令,就是個點符號,(從Bourne Shell而來)。htm

 

二、sh和bash命令用法:進程

     sh FileName

     bash FileName

     做用:在當前bash環境下讀取並執行FileName中的命令。該filename文件能夠無"執行權限"

     注:二者在執行文件時的不一樣,是分別用本身的shell來跑文件。

 

   sh使用「-n」選項進行shell腳本的語法檢查,使用「-x」選項實現shell腳本逐條語句的跟蹤,

   能夠巧妙地利用shell的內置變量加強「-x」選項的輸出信息等。

 

三、./的命令用法:

     ./FileName

     做用:打開一個子shell來讀取並執行FileName中命令。

 

     注:運行一個shell腳本時會啓動另外一個命令解釋器.

         每一個shell腳本有效地運行在父shell(parent shell)的一個子進程裏.

            這個父shell是指在一個控制終端或在一個xterm窗口中給你命令指示符的進程.

         shell腳本也能夠啓動他自已的子進程.

            這些子shell(即子進程)使腳本並行地,有效率地地同時運行腳本內的多個子任務.

 

shell的嵌入命令:

: 空,永遠返回爲true
.   從當前shell中執行操做
break 退出for、while、until或case語句
cd 改變到當前目錄
continue 執行循環的下一步
echo 反饋信息到標準輸出
eval 讀取參數,執行結果命令
exec 執行命令,但不在當前shell
exit 退出當前shell
export 導出變量,使當前shell可利用它
pwd 顯示當前目錄
read 從標準輸入讀取一行文本
readonly 使變量只讀
return 退出函數並帶有返回值
set 控制各類參數到標準輸出的顯示
shift 命令行參數向左偏移一個
test 評估條件表達式
times 顯示shell運行過程的用戶和系統時間
trap 當捕獲信號時運行指定命令
ulimit 顯示或設置shell資源
umask 顯示或設置缺省文件建立模式
unset 從shell內存中刪除變量或函數
wait 等待直到子進程運行完畢

bash shell腳本的運行方式

一個腳本,就是包含shell命令的文件,它是一個shell程序。

運行一個shell腳本有兩種方式:source scriptname/簡單鍵入腳本的名字 而後回車。

source scriptname使得腳本中的命令被讀取並運行 ,就好像是鍵入它們同樣。

而直接鍵入腳本的名字,而後回車呢,其實就像調用一個內置命令同樣。固然,這種方式更方便一些。

source方式不用把文件權限改成可運行,而直接鍵入腳本名的方式則必須使其具備可執行權限。

在運行腳本的兩種方式之間還有更重要的差異。

當使用source使得腳本里的命令被執行時,就好像它們是登陸傳話的一部分,

而第二種方法使得shell作一系列操做。

首先,它運行 shell的另外一個副本做爲一個子進行,稱爲子shell。

而後該子sehll從腳本中取得命令,運行 它們,再中斷,將控制權返回給父shell。

書中舉了一個例子,假定你有一個簡單的shell腳本alice,它包含了命令hatter和gryphon。

  1. 在鍵入source alice使得兩個方法運行在同一個shell下,就像你本身鍵入的同樣。如a

  2. 當你只鍵入alice時,子shell內命令運行,同時父shell靜待子shell完成。如b

  3. 當你使用&使命令運行在後臺時,實際上啥時一個「進程」的另外一稱謂。其實際效果如c

其實c模式和b模式惟一的不一樣就在於,

「當命令運行時你對終端或工做站的控制權不一樣——在輸入進一步命令前不須要等到它完成「。

呃,這裏說的是c模式不須要等到其完成。

相關文章
相關標籤/搜索