Linux Source命令及指令碼的執行方式解析

2021-08-14 09:12:30 字數 2748 閱讀 5910

當我修改了/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

作用:

開啟新的子shell,讀取並執行filename中的命令。該filename檔案可以「執行許可權」

注:兩者在執行檔案時的不同,是分別用自己的shell來跑檔案。

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

可以巧妙地利用shell的內建變數增強「-x」選項的輸出資訊等。

3、./的命令用法:

./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 等待直到子程序執行完畢

直接執行enable命令也可以得到所有的內部命令列表。

Linux Source命令及指令碼的執

當我修改了 etc profile檔案,我想讓它立刻生效,而不用重新登入 這時就想到用source命令,如 source etc profile 對source進行了學習,並且用它與sh 執行指令碼進行了對比,現在總結一下。source命令 source命令也稱為 點命令 也就是乙個點符號 是bas...

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命令也稱為 點命令 也就是乙個點符號 是...