理解系統 bash啟動檔案以及自定義命令提示符

2021-10-07 18:06:41 字數 2642 閱讀 4773

當我們每次進入linux系統時,總能使用到例如ll之類的一些命令,這些命令並非bin目錄下的可執行檔案,而是linux發行版為我們預置的alias。那麼linux發行版究竟是什麼時候又是如何為我們配置的這些東西呢?想要直到這個問題,需要先來了解一下bash的幾種型別

登陸式bash:所謂的登入式bash就是當使用者以登入的方式啟動的bash,例如ssh遠端登入,在命令列輸入bash -l命令啟動乙個登入式child bash或者進入乙個docker容器docker exec -it $ bash -l,注:這個登入的使用者是dockerfile中定義的user,如果沒定義預設是root

非登入式bash:與第一種相反,出現的場景有:在命令列輸入bash命令啟動乙個非登陸式child bash或者進入容器docker exec -it $ bash非互動式bash:這種出現的情況只有一種那就是執行shell指令碼。

針對不同的bash型別,linux會通過不同的配置檔案對其進行啟動配置,並且這些檔名稱都是固定的,linux會預設去執行這些檔案。

登入式bash首先會讀取全域性配置檔案/etc/profile,然後會依次尋找幾個檔案$home/.bash_profile, $home/.bash_login, $home/.profile,找到第乙個檔案就會執行,餘下的則會被忽略。全域性配置檔案不論你是哪個使用者登入都會執行,所以很多常用的別名都會在此配置,家目錄下的配置檔案更加偏向使用者個人的習慣。

非登入式bash只會執行家目錄下的.bashrc,之所以很多人覺得這兩類bash沒有區別是因為該檔案通常會去呼叫執行登入式bash的配置檔案。

非互動式bash即bash指令碼的執行並不會讀取任何配置檔案,但是由於它是乙個child bash所以它會繼承父bash的全域性環境變數(通過export配置的),但是alias是繼承不了的。

/etc/profile

~/.bash_profile

~/.bash_login

~/.profile

~/.bashrc

登入式bash√√

√(當前乙個配置檔案不存在時)

√(當前兩個配置檔案不存在時)

×非登入式bash××

××√非互動式bash××

×××我們登陸不同發行版的linux電腦會發現它們預設的命令提示符都不太相同。那麼這個究竟是在**配置的呢?其實這個配置是通過乙個叫做ps1的環境變數設定的。然後最終的顯示是由我們的終端讀取該變數進行渲染的。

下面先來看看我的配置,然後看下它是如何在終端渲染的:

export ps1='\[\e[36;1m\][\u@\h]\[\e[0m\] \w\$ '

顯示效果:

這個ps1環境變數配置我是設定在$home/.bash_profile中,當然如果你想讓所有的使用者都實現這個效果也可以設定在全域性啟動檔案(/etc/profile)中,不過一般這個是使用者個人習慣,最好不要汙染全域性檔案。

這個配置的含義是:\[\e[36;1m\]代表後面文字是青藍色(36)並且加粗(1m)顯示,[\u@\h]代表了某個使用者在哪個主機(也就是[hch@instance-mfw2qss3]),\[\e[0m\]代表了後面的文字沒有字型顏色和特效。\w代表了當前所在路徑的最後乙個目錄名

bash支援的顏色特效如下表所示,使用方式為\[\e[字型顏色;背景顏色;字型特效m\],這三者的順序不做強制要求,不填的話就按照預設效果顯示。

字型顏色碼

對應顏色

30黑色字型

31紅色字型

32綠色字型

33黃色字型

34藍色字型

35洋紅字型

36青色字型

37白色字型

背景顏色碼

對應顏色

40黑色背景

41紅色背景

42綠色背景

43黃色背景

44藍色背景

45洋紅背景

46青色背景

47白色背景

字型特效碼

對應特效

0無特效1加粗

4下劃線5閃爍

7反白顯示

8不可見

資訊引數碼

含義\u

當前使用者,和whoami命令等價

\h主機名,和hostname命令等價

\w當前目錄完整的路徑名,和pwd命令等價

\w當前目錄

\d當前日期,周月日格式例如 「tue may 26」

\t24小時制的當前時間

\t12小時制的當前時間

\@帶am或pm的12小時制當前時間

\j在此shell中通過按 ^z掛起的程序數

\l此shell的終端裝置名 (如"ttyp4")

\s當前使用的shell名,和echo $0等價

\n換行符

\r回車符

\#井號,用於提示符

\$美元符號,用於提示符

Bash 檔案系統

擴充套件檔案系統,使用虛擬目錄來操作硬體裝置,在物理裝置上按定長的塊來儲存資料。採用名為索引節點的系統來存放虛擬目錄中所儲存檔案的資訊。索引節點系統在每個物理裝置中建立乙個單獨的表 稱為索引節點表 來儲存這些檔案的資訊。儲存在虛擬目錄中的每乙個檔案在索引節點表中都有乙個條目。linux通過唯一的數值...

Bash的功能 執行啟動檔案

如果bash作為login shell呼叫時,它按順序讀取和執行以下檔案中的命令 通常,在 etc profile裡有這麼一句 if d etc profile.d then for i in etc profile.d sh doif r i then.i fidone unset i fi所以,...

理解檔案系統

以liunx下的ext2檔案系統為例 檔案系統說白了就是磁碟上進行檔案管理的系統。想要理解檔案系統我們就要對其構成進行分析。磁碟分為交換分割槽和正常儲存檔案的區域。交換分割槽是當記憶體不夠用時,將記憶體中的某個程序轉移到硬碟上儲存的時候使用的。而剩下的就是檔案系統分割槽了。檔案系統分割槽中分為dat...