當我修改了/etc/profile檔案,我想讓它立刻生效,而不用重新登入;這時就想到用source命令,如:source /etc/profile
對source進行了學習,並且用它與sh 執行指令碼進行了對比,現在總結一下。
source命令:
source命令也稱為「點命令」,也就是乙個點符號(.),是bash的內部命令。
功能:使shell讀入指定的shell程式檔案並依次執行檔案中的所有語句
source命令通常用於重新執行剛修改的初始化檔案,使之立即生效,而不必登出並重新登入。
用法:source filename 或 . filename
source命令(從 c shell 而來)是bash shell的內建命令;點命令(.),就是個點符號(從bourne shell而來)是source的另一名稱。
source filename 與 sh filename 及./filename執行指令碼的區別在那裡呢?
1.當shell指令碼具有可執行許可權時,用sh filename與./filename執行指令碼是沒有區別得。./filename是因為當前目錄沒有在path中,所有"."是用來表示當前目錄的。
2.sh filename 重新建立乙個子shell,在子shell中執行指令碼裡面的語句,該子shell繼承父shell的環境變數,但子shell新建的、改變的變數不會被帶回父shell,除非使用export。
3.source filename:這個命令其實只是簡單地讀取指令碼裡面的語句依次在當前shell裡面執行,沒有建立新的子shell。那麼指令碼裡面所有新建、改變變數的語句都會儲存在當前shell裡面。
舉例說明:
1.新建乙個test.sh指令碼,內容為:a=1
2.然後使其可執行chmod x test.sh
3.執行sh test.sh後,echo $a,顯示為空,因為a=1並未傳回給當前shell
4.執行./test.sh後,也是一樣的效果
5.執行source test.sh 或者 . test.sh,然後echo $a,則會顯示1,說明a=1的變數在當前shell中
**:以下來自另一文
1、source命令用法:
source filename
作用:在當前bash環境下讀取並執行filename中的命令。該filename檔案可以無"執行許可權"
注:該命令通常用命令「.」來替代。
如:source bash_profile
. bash_profile兩者等效。
source(或點)命令通常用於重新執行剛修改的初始化文件。
source命令(從 c shell 而來)是bash shell的內建命令。
點命令,就是個點符號,(從bourne shell而來)。就是順序的執行檔案裡的命令而已。
2、sh和bash命令用法:
sh filename
bash filename
作用:在當前相應的bash環境下新建乙個子shell讀取並執行filename中的命令。該filename檔案可以無"執行許可權"
注:兩者在執行檔案時的不同,是分別用自己的shell來跑檔案。 sh使用「-n」選項進行shell指令碼的語法檢查,使用「-x」選項實現shell指令碼逐條語句的跟蹤,可以巧妙地利用shell的內建變數增強「-x」選項的輸出資訊等。
3、./的命令用法:
./filename
作用:開啟乙個子shell來讀取並執行filename中命令。
該檔案必須有可執行的許可權。
注:執行乙個shell指令碼時會啟動另乙個命令直譯器.
每個shell指令碼有效地執行在父shell(parent shell)的乙個子程序裡. 這個父shell是指在乙個控制終端或在乙個xterm視窗中給你命令指示符的程序.shell指令碼也可以啟動他自已的子程序.這些子shell(即子程序)使指令碼並行地,有效率地地同時執行指令碼內的多個子任務.指令碼裡的變數設定在父程序中無效。指令碼中的export僅僅作用於該指令碼及其子指令碼位置變數引數在向指令碼傳遞引數時,可以使用此位置變數來獲取引數。他們分別是:
$0:指令碼名字。此變數包含位址,可以使用basename
$0獲得指令碼名稱。
$1:第乙個引數
$2,$3,$4,$5,...一次類推。
特定變數引數
一些指令碼執行的相關控制資訊
$# 傳遞到指令碼的引數個數
$* 以乙個單字串顯示所有向指令碼傳遞的引數
$$ 指令碼執行的id號
$! 後台執行的最後乙個程序的id號
$@ 與$#相同,但是使用時加引號,並在引號中返回每個引數。
$- 顯示shell使用的當前選項。
$? 顯示最後命令的推出狀況。0表示沒有錯誤。
**:
Linux Source命令及指令碼的執行方式解析
當我修改了linux裡的 etc profile檔案,我想讓它立刻生效,而不用重新登入 這時就想到用source命令,如 source etc profile 對source進行了學習,並且用它與sh 執行指令碼進行了對比,現在總結一下。source命令 source命令也稱為 點命令 也就是乙個點...
Linux Source命令及指令碼的執行方式解析
當我修改了 etc profile檔案,我想讓它立刻生效,而不用重新登入 這時就想到用 source 命令,如 source etc profile 對source進行了 學習,並且用它與sh 執行指令碼進行了對比,現在總結一下。source命令 source命令也稱為 點命令 也就是乙個點符號 是...
Linux Source命令及指令碼的執行方式解析
當我修改了 etc profile檔案,我想讓它立刻生效,而不用重新登入 這時就想到用 source 命令,如 source etc profile 對source進行了 學習,並且用它與sh 執行指令碼進行了對比,現在總結一下。source命令 source命令也稱為 點命令 也就是乙個點符號 是...