相關(guān)閱讀
Linuxhttps://blog.csdn.net/weixin_45791458/category_12234591.html?spm=1001.2014.3001.5482
? ? ? ? Linux中的內(nèi)建命令export命令用于創(chuàng)建一個環(huán)境變量,或?qū)⒁粋€普通變量導(dǎo)出為環(huán)境變量,并且在這個過程中,可以給該環(huán)境變量賦值。
? ? ? ? 下面是該命令的語法。
用法:
export [-pfn] ([name[=word]])*
選項:
-p 指定該選項會打印出當(dāng)前進(jìn)程的所有環(huán)境變量(被導(dǎo)出的變量)及其值
-f 指定導(dǎo)出一個函數(shù)名
-n 取消一個環(huán)境變量(被導(dǎo)出的變量)或?qū)С龊瘮?shù)的導(dǎo)出屬性
? ? ? ? 環(huán)境變量(被導(dǎo)出的變量)指的是一類特殊的變量,當(dāng)一個進(jìn)程開辟了其他進(jìn)程后,它們會被子進(jìn)程繼承,系統(tǒng)默認(rèn)的環(huán)境變量一般使用大寫變量名,后面我們統(tǒng)稱環(huán)境變量。例如$SHELL這個環(huán)境變量就存儲了用戶默認(rèn)登錄的Shell路徑,可以使用echo命令查看一個環(huán)境變量的值。
[***@EDA ~]$ echo $SHELL
/bin/bash
? ? ? ? 使用export命令而不添加name參數(shù)會導(dǎo)致和使用-p選項一樣的結(jié)果,即打印出當(dāng)前進(jìn)程的所有環(huán)境變量及其值。
[***@EDA ~]$ export
declare -x SHELL="/bin/bash"
declare -x WINDOWPATH="1"
declare -x KDEDIRS="/usr"
declare -x LANG="en_US.UTF-8"
declare -x PrimeTime_HOME="/opt/Synopsys/PrimeTime2018/pts/O-2018.06-SP1"
declare -x Synopsys_Dir="/opt/Synopsys"
*****
[***@EDA ~]$ export -p
declare -x SHELL="/bin/bash"
declare -x WINDOWPATH="1"
declare -x KDEDIRS="/usr"
declare -x LANG="en_US.UTF-8"
declare -x PrimeTime_HOME="/opt/Synopsys/PrimeTime2018/pts/O-2018.06-SP1"
declare -x Synopsys_Dir="/opt/Synopsys"
*****
? ? ? ? 一個進(jìn)程中定義的普通的變量是無法被其子進(jìn)程訪問到的。
[***@EDA ~]$ aaa=1 #在當(dāng)前進(jìn)程創(chuàng)建一個變量
[***@EDA ~]$ bash #在當(dāng)前進(jìn)程運行另一個bash子進(jìn)程
[***@EDA ~]$ echo $aaa #此時嘗試訪問$aaa失敗
(nothing output)
? ? ? ? 一個進(jìn)程中的環(huán)境變量可以被子進(jìn)程繼承。
[***@EDA ~]$ bbb=1 #在當(dāng)前進(jìn)程創(chuàng)建一個變量
[***@EDA ~]$ export bbb #導(dǎo)出該變量(使其成為環(huán)境變量)
[***@EDA ~]$ bash #在當(dāng)前進(jìn)程運行另一個bash子進(jìn)程
[***@EDA ~]$ echo $bbb #此時嘗試訪問$bbb成功
1
? ? ? ? 為什么我們不使用系統(tǒng)默認(rèn)環(huán)境變量舉例呢?這是因為即使我們改變了系統(tǒng)默認(rèn)環(huán)境變量的值,?在新建bash子進(jìn)程時,雖然其繼承了父進(jìn)程的環(huán)境變量,但其會自動讀取配置文件初始化環(huán)境變量,從而覆蓋之前改變的值。
[***@EDA ~]$ SHELL=1 #改變系統(tǒng)默認(rèn)環(huán)境變量
[***@EDA ~]$ echo $SHELL #在當(dāng)前進(jìn)程中,環(huán)境變量的值被改變
1
[***@EDA ~]$ export #在當(dāng)前進(jìn)程中,環(huán)境變量的值被改變
*****
declare -x SHELL="1"
*****
[***@EDA ~]$ bash #在當(dāng)前進(jìn)程運行另一個bash子進(jìn)程
[***@EDA ~]$ echo $SHELL #環(huán)境變量的值雖然被繼承,但緊接著初始化了
/bin/bash
? ? ? ? 使用-n選項可以取消一個環(huán)境變量的導(dǎo)出屬性,即將一個環(huán)境變量變成普通變量。
[***@EDA ~]$ ccc=1 #在當(dāng)前進(jìn)程創(chuàng)建一個變量
[***@EDA ~]$ export ccc #導(dǎo)出該變量(使其成為環(huán)境變量)
[***@EDA ~]$ bash #在當(dāng)前進(jìn)程運行另一個bash子進(jìn)程
[***@EDA ~]$ echo $ccc #此時嘗試訪問$ccc成功
1
[***@EDA ~]$ exit #退出bash子進(jìn)程
[***@EDA ~]$ export -n ccc #取消變量導(dǎo)出(使其成為普通變量)
[***@EDA ~]$ echo $ccc #當(dāng)前進(jìn)程仍可以訪問
[***@EDA ~]$ bash #在當(dāng)前進(jìn)程運行另一個bash子進(jìn)程
[***@EDA ~]$ echo $ccc #此時嘗試訪問$ccc失敗
(nothing output)
? ? ? ? ?使用-f選項可以導(dǎo)出一個函數(shù),使該函數(shù)能在子進(jìn)程中調(diào)用。
[***@EDA ~]$ my_function() { #在當(dāng)前進(jìn)程創(chuàng)建一個函數(shù)
> echo "This is my function."
> }
[***@EDA ~]$ export -f my_function #導(dǎo)出該函數(shù)
[***@EDA ~]$ bash
[***@EDA ~]$ my_function
This is my function.
? ? ? ? 由于.bashrc配置文件的內(nèi)容會在bash啟動后被讀取并執(zhí)行,所以如果要添加一個默認(rèn)的環(huán)境變量,需要在配置文件中使用export命令,如下圖所示。文章來源:http://www.zghlxwxcb.cn/news/detail-842706.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-842706.html
到了這里,關(guān)于Linux:導(dǎo)出環(huán)境變量命令export的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!