linux下的source命令( 命令)解釋及應用

2021-09-26 10:29:55 字數 1638 閱讀 9701

用法:

source filename							# filename必須是可執行的指令碼檔案

或者. filename # 注意「.」號後面還有乙個空格

功能:

通知當前shell讀入路徑為filename的檔案並依次執行檔案中的所有語句。

通常用於重新執行剛修改的初始化檔案,使之立即生效,而不必登出並重新登入。例如,當我們修改了/etc/profile檔案,並想讓它立刻生效,而不用重新登入,就可以使用source命令,如「source /etc/profile」。

source命令是bash shell的內建命令。而點命令(即「.」命令)則是source的另一名稱。這兩個命令都以乙個指令碼為引數,該指令碼將作為當前shell的環境執行,即不會啟動乙個新的子程序。所有在指令碼中設定的變數將成為當前shell的一部分。

應用:

鑑於上述的描述,最簡單的一種應用場景就是,進行交叉編譯時,在當前shell內採用source命令臨時指定系統的編譯環境為嵌入式編譯環境,然後進行原始碼的編譯和除錯。而在別的shell內或者你關閉本shell時,一切又恢復原樣。

比如, 最近在搞i.mx6的嵌入式開發,涉及到核心及裝置樹的編譯除錯,fsl官方在其開發環境的安裝包裡,就配置了這麼乙個shell指令碼,位於/opt/poky/1.7目錄下,直接在shell中輸入以下命令即可匯入該shell指令碼:

source /opt/poky/1.7/environment-setup-cortexa9hf-vfp-neon-poky-linux-gnueabi

然後便可以基於poky的環境進行核心及裝置樹的編譯開發了,非常方便。

比較:

source filenamesh filename./filename這三個命令都可以用於執行乙個指令碼檔案,那麼它們之間的區別又如何呢?

當shell指令碼具有可執行許可權時,用sh filename./filename是沒有區別的。./filename是因為當前目錄沒有在path中,所以"."是用來表示當前目錄的。

sh filename會重新建立乙個子shell,在子shell中執行指令碼裡面的語句,該子shell繼承父shell的環境變數,但子shell是新建的,其改變的變數不會被帶回父shell,除非使用export。

source filename讀取指令碼裡面的語句依次在當前shell裡面執行,沒有建立新的子shell。那麼指令碼裡面所有新建、改變變數的語句都會儲存在當前shell裡面。

舉例:

新建乙個test.sh指令碼,內容為:a=1;

修改其可執行許可權:chmod +x test.sh;

執行sh test.sh後,echo $a,顯示為空,因為a=1並未傳回給當前shell;

執行./test.sh後,也是一樣的效果;

執行source test.sh 或者 . test.sh,然後echo $a,則會顯示1,說明a=1的變數在當前shell中;

linux下的source命令

zz linux source命令及指令碼的執行方式解析 當我修改了 etc profile檔案,我想讓它立刻生效,而不用重新登入 這時就想到用 source 命令,如 source etc profile 對source進行了 學習,並且用它與sh 執行指令碼進行了對比,現在總結一下。source...

linux下的Source命令

source命令用法 source filename 作用 在當前bash環境下讀取並執行filename中的命令。注 該命令通常用命令 來替代。如 source bash rc 與 bash rc 是等效的。注意 source命令與shell scripts的區別是,source在當前bash環境...

Linux下source命令詳解

source filename在當前bash環境下讀取並執行filename中的命令。注 該命令通常用命令 來替代。使用範例 source filename filename 中間有空格 source命令 從 c shell 而來 是bash shell的內建命令。點命令,就是個點符號,從bourn...