操作系統(tǒng)的最外層 —— 也就是跟你直接打交道的 —— 叫做 shell(“外殼”)。Fedora 預(yù)裝了好幾種不同的 shell。shell 可以是圖形界面,或者字符界面。在文檔中,你常常能見到兩個母縮寫詞 GUI (圖形用戶界面Graphical User Interface)跟 CLI(命令行界面Command-Line Interface),它們用來區(qū)分圖形和基于字符的 shell/界面。GNOME 和 Bash 分別是 Fedora 默認的圖形和命令行界面,不過你也可以使用其它 GUI 或者 CLI shell。
成都創(chuàng)新互聯(lián)公司是專業(yè)的孝昌網(wǎng)站建設(shè)公司,孝昌接單;提供網(wǎng)站設(shè)計制作、成都網(wǎng)站設(shè)計,網(wǎng)頁設(shè)計,網(wǎng)站設(shè)計,建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進行孝昌網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團隊,希望更多企業(yè)前來合作!接下來在這篇文章中,我們會討論一些比較推薦的 Bash 字符界面的點文件配置。
Bash 參考手冊中寫道:
除了能使用其它程序之外,Bash shell 還含有一些內(nèi)置命令和關(guān)鍵字。Bash 內(nèi)置功能很強大,甚至能夠作為一門 高級語言 獨當(dāng)一面。Bash 的幾個關(guān)鍵字和操作符類似于 C 語言。
Bash 能夠以交互式或非交互式模式啟動。Bash 的交互模式是一個很多人都熟悉的典型的終端/命令行界面。GNOME 終端 默認以交互模式打開 Bash。Bash 在非交互模式下運行的例子是,當(dāng)命令和數(shù)據(jù)從文件或 shell 腳本通過 管道 傳送到 Bash 時。其它 Bash 可以運行的模式包括:登錄login、非登錄non-login、遠程remote、POSIX、Unix sh、受限r(nóng)estricted,以及使用與用戶不同的 UID/GID 模式。各種模式是可以相互組合的。比如,交互式 + 受限 + POSIX 或者非交互式 + 非登錄 + 遠程。不同的啟動模式,決定著 Bash 所讀取的啟動文件。理解這些操作模式,有助于幫助我們修改啟動文件。
根據(jù) Bash 參考手冊,它會:
當(dāng)用戶開啟終端模擬器進入命令行環(huán)境時,便啟動了一次交互式 shell 會話。GNOME 終端默認以非登錄模式為用戶打開 Shell。你可以在 “編輯 → 選項 → 配置文件 → 命令Edit → Preferences → Profilles → Command” 中配置 GNOME 終端以何種模式(登錄與非登錄式)啟動。也可以在 Bash 啟動時通過向其傳遞 -login 標(biāo)志來要求進入登錄模式。要注意一點,Bash 的登錄模式與非交互模式并不互斥??梢宰?Bash 同時以登錄模式和非交互模式運行。
除非傳入 -noprofile 選項,否則登錄模式的 Bash shell 會默認讀取并執(zhí)行某些初始化文件中命令。如果 /etc/profile 存在,它會是第一個被執(zhí)行的文件,緊接著是按 ~/.bash_profile、~/.bash_login 或 ~/.profile順序找到的第一個文件。當(dāng)用戶退出登錄模式的 shell 時,或者有腳本在非交互式登錄模式的 shell 中調(diào)用了內(nèi)置 exit命令,Bash 會讀取并執(zhí)行 ~/.bash_logout 中的命令,如果 /etc/bash_logout 存在的話,會緊接著執(zhí)行它。通常來說,/etc/profile 會援引source /etc/bashrc 文件,讀取并執(zhí)行其中的命令,然后查找并讀取執(zhí)行 /etc/profile.d 目錄中以 .sh 結(jié)尾的文件。同樣的,~/.bash_profile 通常也會援引source ~/.bashrc 文件。/etc/bashrc 和 ~/.bashrc 都會進行檢查,避免重復(fù)援引source。
一個交互式的 shell,如果不是登錄 shell,那么當(dāng)它第一次被調(diào)用的時候,會執(zhí)行 ~/.bashrc 文件。這是用戶在 Fedora 上打開終端時通常會進入的 shell 類型。當(dāng) Bash 以非交互模式啟動 —— 就像運行腳本時那樣 —— 它會尋找 BASH_ENV環(huán)境變量。如果找到了,就會展開它的值作為文件名,接著讀取并執(zhí)行該文件。效果跟執(zhí)行以下命令相同:
值得注意的是,不會使用 PATH 環(huán)境變量的值來搜索該文件名(LCTT 譯注:意即不會檢索搜索路徑)。
Bash 最廣為人知的用戶點文件是 ~/.bashrc。通過編輯該文件,可以設(shè)置大多數(shù)個性化選項。由于我們常常需要設(shè)置一些選項,會改動上面提及甚至沒有提及的文件,所以大部分自定義選項會成為一個麻煩事。Bash 環(huán)境具有很高的可定制性,正是為了適應(yīng)不同用戶的不同需求。
當(dāng)?shù)卿?shell 正常退出時,如果 ~/.bash_logout 和 /etc/bash_logout 存在,它們會被調(diào)用。下一幅圖展示了 Bash 作為交互式 shell 啟動時的過程。例如,當(dāng)用戶從桌面環(huán)境打開終端模擬器時,會按照以下順序進行。
我們已經(jīng)知道,在不同的啟動模式下,Bash 會執(zhí)行不同的命令,所以很明顯,只有幾種最需要關(guān)注的典型啟動模式。分別是非交互、交互式登錄 shell,和非交互式、交互式非登錄 shell。如果想定義某些全局環(huán)境,那么需要將一個具有唯一名稱、以 .sh 為后綴的文件(例如 custom.sh)放置在 /etc/profile.d 目錄。
對于非交互式非登錄啟動方式,需要特別注意。在這種模式下,Bash 會檢查 BASH_ENV 變量。如果定義了該變量,Bash 會援引它所指向的文件。另外,處理 BASH_ENV 時并不會使用 PATH 變量所存儲的值(LCTT 譯注:意即不會檢索搜索路徑),所以它必須包含執(zhí)行文件的絕對路徑。比如說,如果有人希望非交互式執(zhí)行腳本時,shell 能讀取 ~/.bashrc 文件中的設(shè)置,那么他可以把類似下面這樣的內(nèi)容放在一個名為 /etc/profile.d/custom.sh 的文件中...
上面這份腳本會讓每個 shell 腳本在運行之前先執(zhí)行該用戶的 ~/.bashrc。
用戶一般都會自定義他們的系統(tǒng)環(huán)境,以便契合他們自己的工作習(xí)慣與偏好。舉例來說,用戶可以通過別名來實現(xiàn)這種程度的自定義。擁有相同起始參數(shù)、需要頻繁使用的命令是制作別名的最佳選擇。以下展示了一些來自 ~/.bashrc 文件中定義的別名。
在系統(tǒng)中,別名是一種自定義各種命令的方法。它能減少擊鍵次數(shù),而且讓命令用起來更方便。針對用戶級別的別名通常存放在該用戶的 ~/.bashrc 文件中。
如果你發(fā)現(xiàn)自己經(jīng)常要去歷史中查找曾經(jīng)執(zhí)行過的某條命令,那可能需要改改歷史設(shè)置了。你依然可以在 ~/.bashrc 文件中設(shè)置針對用戶級別的歷史選項。比如說,如習(xí)慣同時使用多個終端,那你可能要啟用 histappend 選項。某些 Bash 相關(guān)的 shell 選項本質(zhì)上是布爾值(接收 on 或 off),通常可以用內(nèi)置命令 shopt 啟用或禁用。接收更復(fù)雜的值的 Bash 選項(如 HISTTIMEFORMAT),常常通過賦值給環(huán)境變量來達到配置目的。以下演示如何以 shell 選項和環(huán)境變量定制 Bash。
上面例子中的 direxpand 選項,可以讓 Bash 在文件名補全時,用單詞展開結(jié)果替換目錄名。它會改變 readline 編輯緩沖區(qū)的內(nèi)容,所以你所輸入的東西已經(jīng)被補全得到的結(jié)果替換了。
HISTCON TROL 變量用于啟用或禁用命令歷史的某些過濾選項。重復(fù)行、以空白打頭的行,都能通過該選項將它們從命令歷史中過濾掉。引用自 Dusty Mabe,這是我從他那兒得到的技巧:
對于命令行重度用戶,Bash 有一個 CDPATH 環(huán)境變量。如果 CDPATH 包含一系列供 cd 命令搜索的目錄,且提供一個相對路徑作為第一個參數(shù),那么它會按順序檢查所有列出的目錄,尋找匹配的子目錄并切換到第一個匹配結(jié)果目錄。
CDPATH 通常像 PATH 一樣的方式進行更新 —— 通過在賦值右側(cè)引用自身來保留原來的值。
PATH 是另一個極其重要的變量。它是系統(tǒng)上的命令的搜索路徑。注意,有些應(yīng)用要求將它們自己的目錄加入 PATH 變量,這樣才能正常使用。跟 CDPATH 一樣,通過在賦值右側(cè)引用原值來追加新值到 PATH 變量。如果你希望將新值前置,只需要把原來的值($PATH)放到列表末尾即可。還有注意的是在 Fedora,這一列值通過冒號分隔(:)。
命令提示符是另一個流行的自定義選項。它有七個可定制的參數(shù):
Bash 的這一個方面就可以用整篇文章來討論。你可以找到許許多多信息和例子。在本文末尾鏈接的存儲庫中提供了一些點文件范例,包括提示符重新配置。你可以隨意使用該存儲庫中的例子進行學(xué)習(xí)和體驗。
既然你已經(jīng)掌握了一些 Bash 的工作原理,那就可以輕松修改你的 Bash 點文件,滿足你自己的需求和習(xí)慣。美化你的提示符,制作一些別名,這樣你的電腦才真的屬于你。查看 /etc/profile、/etc/bashrc 和 /etc/profile.d/ 這些文件的內(nèi)容,獲得一些啟發(fā)。
你也可以在這里寫一些關(guān)于終端模擬器的評論。有很多辦法可以將你最喜歡的終端,完全配置成你想要的樣子。你或許早就想到了,但是通常可以通過……嗯……用戶家目錄的點文件實現(xiàn)這個目的。終端模擬器也可以作為登錄會話啟動,有些人總喜歡用登錄環(huán)境。你使用終端和電腦的姿勢,取決于你如何修改(或不修改)你的點文件。
如果你很好奇自己的命令行處于什么會話狀態(tài),使用下面這個腳本來判斷一下。
把這幾行放到一個文件里,加上可執(zhí)行權(quán)限,然后運行,就能看到你當(dāng)前處于何種類型的 shell。$- 在 Bash 中是一個變量,如果是交互式 shell,它會包含字母 i。此外,你可以直接輸出 $- 變量然后檢查它的輸出中是否含有 i 標(biāo)記。
可以參考以下資料以獲取更多信息和示例。Bash 手冊也是一個很好的信息來源。請注意,確保你的本地手冊頁記錄了你當(dāng)前運行的 Bash 版本的特性,因為在網(wǎng)上找到的信息有時可能太老(過時了)或太新(你的系統(tǒng)還沒有安裝)。
對本文有各種形式(點文件示例、提示,以及腳本文件)貢獻的社區(qū)成員:
示例點文件和腳本可以在這個存儲庫中找到:
請仔細檢查上面所提供的存儲庫中的信息。有些可能已經(jīng)過時了。里面還包含很多開發(fā)中的自定義腳本和寵物容器pet container配置例子,那些不是點文件。我推薦從 John Lebon 的點文件開始學(xué)習(xí),從頭到尾都含有完善的解說,它們是我見過的最詳細的,并且包含了非常好的描述。祝你學(xué)得開心!
網(wǎng)頁題目:深入了解定制Bash
本文URL:http://www.rwnh.cn/article36/sojdsg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站營銷、品牌網(wǎng)站設(shè)計、網(wǎng)站策劃、網(wǎng)站收錄、ChatGPT、定制網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)