認識shell和bash的環境變數

2021-09-24 19:59:26 字數 1627 閱讀 4650

引言:

在unix作業系統開發中,shell是我們經常需要使用的乙個應用程式。一般地,我們經常使用shell來執行命令或者某個程式。但是什麼是shell,以及我們經常配置bash的環境變數又是怎麼一回事。

關於shell:

只要能夠操作應用程式的介面都能夠稱為shell。狹義的shell指的是命令列的軟體。廣義的shell還包括圖形介面的軟體。(摘自鳥哥的私房菜第三版294頁)

在我看來shell是聯絡核心的乙個介面。狹義的認為,通過命令列終端來操作的軟體就是shell。

在unix系統中有很多shell,但是我們經常預設使用的是bash,即bourne-again shell。所以我們只要掌握好bash的使用就好。

bash的環境變數:

環境變數一般用來搜尋可執行程式的路徑等。

使用env可以檢視當前bash的所有環境變數,使用set可以檢視當前bash的自定義變數和環境變數。

export可以將自定義變數轉換成環境變數。

下面描述幾個常用的環境變數:

echo $$:檢視當前shell的pid,pid即程序id。

echo $?:檢視當前命令執行的回傳碼。

但是我們要將環境變數在每次bash開啟時都要生效,那麼需要寫到環境變數檔案中去。

關於環境變數檔案:

即便是bash,也是有不同狀態的bash,他們使用的環境變數也是不大一樣。

其中最主要的是login shell和non-login shell,重點在於有沒有登入login。

login shell:取得bash時需要完整的登入流程,就稱為login shell。舉例來說,你要由tty1-tty6登入,需要輸入使用者的賬號和密碼,此時取得的bash就稱為「login bash」。

non-login shell:取得bash介面的方法不需要重複登入的舉動,舉例來說,你以x window登入linux後,再以x的圖形介面啟動終端機,此時那個終端介面並沒有需要再次輸入賬號與密碼,那個bash環境就稱為non-login shell。

login shell指揮讀取這兩個配置檔案:

/etc/profile:這是系統整體的設定

~/.bash_profile或~/.bash_login或~/.profile:屬於使用者個人設定。

對於non-login shell只會讀取~/.bashrc

下面這張圖是login shell的配置檔案讀取流程:

那麼怎麼判斷自己當前的bash是login shell還是non-login shell呢?下面介紹乙個簡單的方法:

命令列輸入:echo $0

如果顯示的是:bash,那麼是non-login shell;

如果顯示的是:-bash,那麼是login shell;

關於login shell和non-login shell

認識bash這個shell

我們通過shell將我們輸入的命令與核心通訊,好讓核心可以控制硬體來正確無誤地工作 bash是我們linux預設的shell 1.x window與web介面工具一樣,介面雖然親善,功能雖然強大,但畢竟它是將所有利用到的軟體整合在一起的一組應用程式而已,並非乙個完整的套件,所以某些時候當你公升級或者...

1 認識bash這個shell

計算機與核心 外殼的關係 首先,管理整個計算機硬體的其實是作業系統的核心 kernel 這個核心是需要保護的,所以我們一般的使用者就只能通過shell 外殼 來跟核心通訊,以讓核心達到我們所想要的工作。什麼是shell?作業系統其實是一組軟體,由於這組軟體在控制整個硬體與管理系統的活動監測,如果這組...

shell 變數 環境變數 bash

1.在bash中,shell變數可以直接通過通過如下形式建立 name value 2.shell變數不能被子程序 字shell 繼承,通過export,可以令shell變數成為環境變數 此時會出現在env的輸出中 環境變數可以被子程序繼承 3.shell中檢視當前所有環境變數用命令 env或者pr...