shell中source和export區(qū)別

source命令用法:?source FileName?

作用:在當(dāng)前bash環(huán)境下讀取并執(zhí)行FileName中的命令。該命令通常用命令“.”來替代。

source命令(從 C Shell 而來)是bash shell的內(nèi)置命令。點(diǎn)命令,就是個(gè)點(diǎn)符號(hào),(從Bourne Shell而來)是source的另一名稱。同樣的,當(dāng)前腳本中配置的變量也將作為腳本的環(huán)境,source(或點(diǎn))命令通常用于重新執(zhí)行剛修改的初始化文檔,如 .bash_profile和 .profile 等等。例如,假如在登錄后對(duì) .bash_profile 中的 EDITER 和 TERM 變量做了修改,則能夠用source命令重新執(zhí)行 .bash_profile 中的命令而不用注銷并重新登錄。?

比如您在一個(gè)腳本里export TOOL_CHAINS=/root/home ,假如您用./xxx.sh執(zhí)行該腳本,執(zhí)行完畢后,您運(yùn)行 echo $TOOL_CHAINS ,發(fā)現(xiàn)沒有值。因?yàn)檎{(diào)用./xxx.sh來執(zhí)行shell是在一個(gè)子shell里運(yùn)行的,所以執(zhí)行后,結(jié)構(gòu)并沒有反應(yīng)到父shell里,但是 source是在本shell中執(zhí)行的,所以能夠看到echo結(jié)果。

shell編程中的命令有時(shí)和C語言是一樣的。&&表示與,||表示或。把兩個(gè)命令用&&聯(lián)接起來,如 make mrproper && make menuconfig ,表示要第一個(gè)命令執(zhí)行成功才能執(zhí)行第二個(gè)命令。對(duì)執(zhí)行順序有要求的命令能保證一旦有錯(cuò)誤發(fā)生,下面的命令不會(huì)盲目地繼續(xù)執(zhí)行。

結(jié)論:

1、執(zhí)行腳本是在一個(gè)子shell環(huán)境運(yùn)行的,腳本執(zhí)行完后該子shell自動(dòng)退出。

2、執(zhí)行腳本中的系統(tǒng)環(huán)境變量(用export定義的變量)才會(huì)被復(fù)制到子shell中。

3、一個(gè)shell中的系統(tǒng)環(huán)境變量只對(duì)該shell或者它的子shell有效,該shell結(jié)束時(shí)變量消失(并不能返回到父shell中)。

4、不用export定義的變量只對(duì)該shell有效,對(duì)子shell也是無效的。?直接執(zhí)行一個(gè)腳本文件是在一個(gè)子shell中運(yùn)行的,而source則是在當(dāng)前shell環(huán)境中運(yùn)行的。source可以讓腳本影響它們的父shell環(huán)境,這和export去影響子shell環(huán)境相反。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • shell與export命令 用戶登錄到Linux系統(tǒng)后,系統(tǒng)將啟動(dòng)一個(gè)用戶shell。在這個(gè)shell中,可以使...
    Ten_Minutes閱讀 2,247評(píng)論 0 2
  • 一、shell腳本介紹 1.1 開頭(環(huán)境使用shebang機(jī)制) #!/bin/bash 必須寫在文件首行 符號(hào)...
    優(yōu)果馥斯閱讀 3,605評(píng)論 0 1
  • 第一節(jié) Shell概述 1.Shell是什么 Shell是一個(gè)命令行解釋器,它為用戶提供了一個(gè)向Linux內(nèi)核發(fā)送...
    littlexjing閱讀 2,146評(píng)論 0 1
  • 本文全面系統(tǒng)地介紹了shell腳本調(diào)試技術(shù),包括使用echo, tee, trap等命令輸出關(guān)鍵信息,跟蹤變量的值...
    liuzg0734閱讀 1,001評(píng)論 0 14
  • linux資料總章2.1 1.0寫的不好抱歉 但是2.0已經(jīng)改了很多 但是錯(cuò)誤還是無法避免 以后資料會(huì)慢慢更新 大...
    數(shù)據(jù)革命閱讀 13,235評(píng)論 2 33

友情鏈接更多精彩內(nèi)容