當(dāng)前位置:首頁(yè) > IT技術(shù) > 系統(tǒng)服務(wù) > 正文

Linux shell 環(huán)境變量及有效范圍
2021-09-17 11:53:11

每當(dāng)我們使用ssh客戶端遠(yuǎn)程登陸一個(gè)服務(wù)時(shí),操作系統(tǒng)就會(huì)給我們分配一個(gè)新的shell,并且這個(gè)shell繼承了操作系統(tǒng)的永久環(huán)境變量。在當(dāng)前的shell執(zhí)行一個(gè)sh文件,都會(huì)臨時(shí)產(chǎn)生一個(gè)子shell,該文件執(zhí)行完畢后,將自動(dòng)返回到父shell。

子shell會(huì)繼承父shell的所有永久環(huán)境變量和臨時(shí)環(huán)境變量。

父shell不能使用子shell中定義的變量和環(huán)境變量。

?

1.永久環(huán)境變量

/etc/profile? 永久生效,對(duì)所有用戶有效,需要重啟
/etc/bashrc 永久生效,對(duì)所有用戶有效,無(wú)需重啟
~/.bashrc??? 永久生效,僅對(duì)當(dāng)前用戶所屬的shell有效

2.臨時(shí)環(huán)境變量
var=value
export var
僅對(duì)當(dāng)前的shell及子shell有效。

3.普通變量
shell中的普通變量很簡(jiǎn)單, 僅能被當(dāng)前shell訪問, 不能被其子進(jìn)程訪問, 更不能被其它shell訪問。

?

常見場(chǎng)景:

1.引用環(huán)境變量聲明文件

我們?cè)赿eploy一個(gè)項(xiàng)目的時(shí)候,經(jīng)常用到。如果編寫的shell腳本,想引入一個(gè)用于聲明臨時(shí)環(huán)境變量的文件,并且在該腳本中使用相關(guān)變量,可以使用source命令。

例如:SetEnv.sh 中聲明了普通的變量和臨時(shí)環(huán)境變量。

#!/bin/bash

hostname=`hostname`

weblogic_home=/opt/weblogic/
export weblogic_home

在verify.sh中,使用source讀入SetEnv.sh文件內(nèi)容并自動(dòng)執(zhí)行后,就可以使用SetEnv.sh中的變量。

#!/bin/bash
source ./SetEnv.sh

echo $hostname
echo $weblogic_home

Linux source命令:

通常用法:source filepath 或 . filepath

功能:使當(dāng)前shell讀入路徑為filepath的shell文件并依次執(zhí)行文件中的所有語(yǔ)句,通常用于重新執(zhí)行剛修改的初始化文件,使之立即生效,而不必注銷并重新登錄。例如,當(dāng)我們修改了/etc/profile文件,并想讓它立刻生效,而不用重新登錄,就可以使用source命令,如source /etc/profile。

source命令(從 C Shell 而來)是bash shell的內(nèi)置命令;

點(diǎn)命令(.),就是個(gè)點(diǎn)符號(hào)(從Bourne Shell而來)是source的另一名稱。這從用法中也能看出來。

本文摘自 :https://blog.51cto.com/b

開通會(huì)員,享受整站包年服務(wù)立即開通 >