每當(dāng)我們使用ssh客戶端遠(yuǎn)程登陸一個服務(wù)時,操作系統(tǒng)就會給我們分配一個新的shell,并且這個shell繼承了操作系統(tǒng)的永久環(huán)境變量。在當(dāng)前的shell執(zhí)行一個sh文件,都會臨時產(chǎn)生一個子shell,該文件執(zhí)行完畢后,將自動返回到父shell。
子shell會繼承父shell的所有永久環(huán)境變量和臨時環(huán)境變量。
父shell不能使用子shell中定義的變量和環(huán)境變量。
?
1.永久環(huán)境變量
/etc/profile? 永久生效,對所有用戶有效,需要重啟
/etc/bashrc 永久生效,對所有用戶有效,無需重啟
~/.bashrc??? 永久生效,僅對當(dāng)前用戶所屬的shell有效
2.臨時環(huán)境變量
var=value
export var
僅對當(dāng)前的shell及子shell有效。
3.普通變量
shell中的普通變量很簡單, 僅能被當(dāng)前shell訪問, 不能被其子進(jìn)程訪問, 更不能被其它shell訪問。
?
常見場景:
1.引用環(huán)境變量聲明文件
我們在deploy一個項目的時候,經(jīng)常用到。如果編寫的shell腳本,想引入一個用于聲明臨時環(huán)境變量的文件,并且在該腳本中使用相關(guān)變量,可以使用source命令。
例如:SetEnv.sh 中聲明了普通的變量和臨時環(huán)境變量。
#!/bin/bash
hostname=`hostname`
weblogic_home=/opt/weblogic/
export weblogic_home
在verify.sh中,使用source讀入SetEnv.sh文件內(nèi)容并自動執(zhí)行后,就可以使用SetEnv.sh中的變量。
#!/bin/bash
source ./SetEnv.sh
echo $hostname
echo $weblogic_home
Linux source命令:
通常用法:source filepath 或 . filepath
功能:使當(dāng)前shell讀入路徑為filepath的shell文件并依次執(zhí)行文件中的所有語句,通常用于重新執(zhí)行剛修改的初始化文件,使之立即生效,而不必注銷并重新登錄。例如,當(dāng)我們修改了/etc/profile文件,并想讓它立刻生效,而不用重新登錄,就可以使用source命令,如source /etc/profile。
source命令(從 C Shell 而來)是bash shell的內(nèi)置命令;
點命令(.),就是個點符號(從Bourne Shell而來)是source的另一名稱。這從用法中也能看出來。
本文摘自 :https://blog.51cto.com/b