Linux 基礎知識 bashrc環境配置

2021-09-28 00:18:45 字數 3383 閱讀 3739

相信是個新手入門的老大難問題了,仔細看看吧:

bashrc檔案主要儲存個人的一些個性化設定,如命令別名、路徑等。也即在同乙個伺服器上,只對某個使用者的個性化設定相關。它是乙個隱藏檔案,需要使用ls -a來檢視。

.bash_history   記錄之前輸入的命令

.bash_logout    當你退出時執行的命令

.bash_profile    當你登入shell時執行

.bashrc             當你登入shell時執行

後兩個的區別:'.bash_profile'只在會話開始時被讀取一次,而'.bashrc'則每次開啟新的終端時,都要被讀取。

這些檔案是每一位使用者對終端功能和屬性設定,修改.bashrc可以改變環境變數path、別名alias和提示符。具體如何修改會在下面做介紹。

除了可以修改使用者目錄下的.bashrc檔案外,還可以修改如「/etc/profile」檔案、「/etc/bashrc」檔案及目錄「/etc /profile.d」下的檔案。但是修改/etc路徑下的配置檔案將會應用到整個系統,屬於系統級的配置,而修改使用者目錄下的.bashrc則只是限制在使用者應用上,屬於使用者級設定。兩者在應用範圍上有所區別,建議如需修改的話,修改使用者目錄下的.bashrc,即無需root許可權,也不會影響其他使用者。

這裡可以切到自己的機器上:

vim .bashrc 和 vim /etc/bashrc

看看裡面都有啥

path環境變數修改

path變數決定了shell 將到哪些目錄中尋找命令或程式。如果要執行的命令的目錄在 $path 中,您就不必輸入這個命令的完整路徑,直接輸入命令就可以了。一些第三方軟體沒有將可執行檔案放到 linux 的標準目錄中。因此,將這些非標準的安裝目錄新增到 $path 是一種解決的辦法。此外,您也將看到如何處理一般的環境變數。

首先,作為慣例,所有環境變數名都是大寫由於 linux 區分大小寫,這點您要留意。當然,您可以自己定義一些變數,如'$path'、'$path',但 shell 不會理睬這些變數。

第二點是變數名有時候以'$'開頭,但有時又不是。當設定乙個變數時,直接用名稱,而不需要加「$」,如

「path=/usr/bin:/usr/local/bin:/bin」

假如要獲取變數值的話,就要在變數名前加'$':

「echo $path」

則會顯示當前設定的path變數「/usr/bin:/usr/local/bin:/bin」

否則的話,變數名就會被當作普通文字了:

「echo path」

顯示「path」

處理 $path 變數要注意的第三點是:您不能只替換變數,而是要將新的字串新增到原來的值中。在大多數情況下,您不能用「path=/some /directory」,因為這將刪除 $path 中其他的所有目錄,這樣您在該終端執行程式時,就不得不給出完整路徑。所以,只能作新增:「path=$path:/some/directory」,假如你要新增/usr/local/arm/3.4.1/bin交叉編譯命令,則操作為「path=$path:/usr/local/arm/3.4.1/bin」

這樣,path 被設成當前的值(以 $path 來表示)+新添的目錄。

到目前為止,你只為當前終端設定了新的 $path 變數。如果您開啟乙個新的終端,執行 echo $path ,將顯示舊的 $path 值,而看不到你剛才新增的新目錄。因為你先前定義的是乙個區域性環境變數(僅限於當前的終端)。

要定義乙個全域性變數,使在以後開啟的終端中生效,您需要將區域性變數輸出(export),可以用"export"命令:

export path=$path:/some/directory

現在如果開啟乙個新的終端,輸入 echo $path ,也能看到新設定的$path 了。請注意,命令'export'只能改變當前終端及以後執行的終端裡的變數。對於已經執行的終端沒有作用。

為了將目錄永久新增到 $path ,只要將"export"的那行新增到.bashrc或/etc/bashrc檔案中。

使用命令:

sudo gedit ~/.bashrc

別名

一般在.bashrc或/etc/bashrc檔案裡有幾句話

alias rm='rm -i'

alias cp='cp -i'

alias mv='mv -i'

有了這幾句話,當在終端中輸入「mv test.c led.c」實際上輸入的是「mv -i test.c led.c」,所以說alias是乙個別名。你可以在該配置檔案中新增自己風格的別名,如「alias ll='ls -l'」,只需要在終端中輸入「ll」就實現了「ls -l」的功能。還可以新增其他語句,隨自己喜好。

提示符

當開啟乙個控制台(console) 時,最先看到的就是提示符(prompt),如:[root@localhost ~]#

在預設設定下,提示符將顯示使用者名稱、主機名(預設是'localhost')、當前所在目錄(在 unix 中,'~'表示您的 home 目錄)。按照傳統,最後乙個字元可以標識普通使用者($),還是'root'(#)。可以通過 $ps1 變數來設定提示符。

命令「echo $ps1」,將顯示當前的設定。其中可用字元的含義在 man bash 的'prompting'部分有說明。

如何才能完成理想的設定呢?對於健忘的初學者來講,預設設定有些不友好,因為提示符只顯示當前目錄的最後一部分。如果你看到象這樣的提示符

[wsf@localhost bin]$

則當前目錄可能是'/bin'、'/usr/bin'、'/usr/local/bin'及'/usr/x11r6/bin'。當然,你可以用

pwd (輸出當前目錄,print working directory)

能不能叫 shell 自動告訴你當前目錄呢?

當然可以。這裡我將提到的設定,包括提示符,大都包含在檔案'/etc/bashrc'中。您可以通過編輯各自 home 目錄下的'.bash_profile'和'.bashrc'來改變設定。

在 man bash 中的'prompting'部分,對這些引數(parameter)有詳細說明。您可以加入一些小玩意,如不同格式的當前時間,命令的歷史記錄號,甚至不同的顏色。

一種更適當的設定:

ps1="[\u: \w]\\$ "

這樣,提示符就變成:

[wsf: /usr/bin]$

你可以通過命令 export 來測試不同的設定(比如,export ps1="\u: \w\\$ ")。如果找到了適合的提示符,就將設定放到您的'.bashrc''中。這樣,每次開啟控制台或終端視窗時,都會生效。

linux基礎知識

舉例來說,硬碟的檔名稱即為 dev hd a d 其中,括號內的字母為 a d 當中的任何乙個,亦即由 dev hda,dev hdb,dev hdc,及 dev hdd 這四個檔案的意思 注 這種型式的表示法在後面的章節當中會使用得很頻繁,請特別留意 那麼光碟機與軟盤呢?分別是 dev cdrom...

Linux基礎知識

檔案系統 分割槽和掛載 linux 檔案系統是乙個檔案樹,它的所有檔案和外部裝置都是以檔案的形式掛結在這個檔案樹上,例如 usr local 目錄結構屬於分割槽 linux 下,分割槽屬於目錄結構。預設檔案系統一般為ext3 ext2的公升級版 分割槽包括主分割槽 擴充套件分割槽 邏輯分割槽和swa...

linux基礎知識

軟體環境 centos release 6.5 final 1 如何使vm虛擬機器上的centos連線到外網?1 把vm虛擬機器上的network connection設定為bridge模式 2 把網絡卡eth0配置資訊中的bootproto設定為dhcp 3 win7的cmd中輸入ipconfig...