Bash Shell環境變數解析

2022-09-23 00:48:12 字數 1803 閱讀 8840

一、環境變數的種類

環境變數在linux系統中的重要性不必多說,以下就以centos7為例,詳細闡述系統的環境變數。當使用者登入linux系統啟動乙個bash shell時,系統缺省會在幾個檔案中查詢命令,這些檔案就被稱為環境檔案。bash shell查詢的環境檔案取決於啟動bash shell的方式。bash shell的啟動方式可分為以下3種: 1. 使用者登陸時作為預設登陸shell。 2. 作為非登陸shell的互動式shell(比如登陸後通過bash啟動的子shell)。 3. 作為執行指令碼的非互動shell。 以下就上述3種shell的環境變數檔案查詢進行詳細說明。

二、3種shell的環境變數檔案

1.登陸shell 當乙個使用者登陸linux系統時,首先會檢查/etc/profile檔案(也會根據該檔案的設定檢查/etc/profile.d目錄下的所有檔案),/etc/profile檔案是系統上預設的bash shell主啟動檔案,每個登入使用者都會執行這個啟動檔案。 其次,會檢查使用者的專屬啟動檔案,大多數linux發行版只用到下面4個啟動檔案中的1~2個,這4個啟動檔案起到乙個共同的作用:定義使用者專屬的環境變數。 (1) $home/.bash_profile (2) $home/.bashrc (3) $home/.bash_login (4) $home/.profile 通常shell會按照下列順序,找到第乙個被找到的檔案,餘下的則會被忽略: (1) $home/.bash_profile (2) $home/.bash_login (3) $home/.profile 可以發現,上述3個檔案中並沒有$home/.bashrc,這是因為該檔案通常通過其他檔案執行。

[root@host3 ~]# vim .bash_profile

# .bash_profile

# get the aliases and functions

if [ -f ~/.bashrc ]; then

. ~/.bashrc

fi# user specific environment and startup programs

path=$path:$home/bin

export path可以看到$home/.bash_profile其實是讀取了$home/.bashrc檔案。 2.互動式shell程序 當你的shell不是登陸系統時啟動的(比如在系統內輸入bash命令啟動的子shell),此時啟動的shell則成為互動式shell,因為該shell同樣可以提供乙個命令提示符來輸入命令。此時與登陸shell的區別在於:不會檢查/etc/profile檔案和/etc/profile.d目錄下的所有檔案,只會按順序檢查 (1) $home/.bash_profile (2) $home/.bash_login (3) $home/.profile 通常情況下,只檢查$home/.bashrc檔案。 3.非互動式shell 系統在執行指令碼時用到的就是這種shell,他沒有命令提示符,bash會通過bash_env環境變數來檢查要啟動的檔案,但centos系統中預設該變數為空

[root@host3 ~]# echo $bash_env

[root@host3 ~]#此時的環境變數則為繼承父shell的(指令碼是當前shell中啟動的乙個子程序),需要注意的是:如果父shell中定義但未匯出的環境變數屬於區域性變數,子shell不能繼承。

三、總結

通過前文知道了環境變數檔案啟動的條件,通常情況下,個人永久環境變數存放在$home/.bashrc下,這一點適用於所有型別的shell程序;對於全域性變數(所有linux使用者都需要用到的變數)可以放在/etc/profile檔案中,但建議存放在/etc/profile.d目錄下乙個以.sh結尾的檔案中,它的好處是當系統版本公升級時,/etc/profile檔案會隨之更新,定製的變數設定則會清空。

Bash Shell環境變數學習

linux環境變數作用 用來獲取系統資訊,shell的工作環境,在記憶體中儲存臨時資料。bash shell使用環境變數 environment variable 分為全域性 global 與區域性 local 環境變數。環境變數的值不僅是乙個路徑而已。全域性環境變數 系統會為bash shell建...

Linux中bash shell環境變數

別名 別名是命令的快捷方式。為那些需要經常執行,但需要很長時間輸入的長命令建立快捷方式很有用。語法是 它們並不總是用來縮短長命令。重要的是,你將它們用於你經常執行的任務。可能的例子 alias update yum update 這樣就可以只是用update來完成yum update的命令操作了 在...

解析環境變數

一般是指在作業系統中用來指定作業系統執行環境的一些引數。它具有某些特殊用途,在作業系統中通常具有全域性屬性,並且可以被子程序繼承下去。環境變數名稱 含義path 指定命令的搜尋路徑 home 指定使用者的主工作目錄 即使用者登入到linux系統中時,預設的目錄 histsize 儲存歷史命令記錄的條...