linux下 bashrc檔案修改和生效

2021-07-30 15:51:47 字數 3715 閱讀 1876

1) .bashrc檔案

在linux系統普通使用者目錄(cd /home/***)或root使用者目錄(cd /root)下,用指令ls -al可以看到4個隱藏檔案,

.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許可權,也不會影響其他使用者。

2) 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檔案中。

3) alias別名

一般在.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」的功能。還可以新增其他語句,隨自己喜好。

4) 提示符

當開啟乙個控制台(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」中。這樣,每次開啟控制台或終端視窗時,都會生效。

(5)舉例,生效方式

這個檔案主要儲存個人的一些個性化設定,如命令別名、路徑等。下面是個例子:

# user specific aliases and functions

path="/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin"

lang=zh_cn.gbk

export path lang

alias rm='rm -i'

alias ls='/bin/ls -f --color=tty --show-control-chars'

例子中定義了路徑,語言,命令別名(使用rm刪除命令時總是加上-i引數需要

使用者確認,使用ls命令列出檔案列表時加上顏色顯示)。

每次修改.bashrc後,使用source ~/.bashrc(或者 . ~/.bashrc)

就可以立刻載入修改後的設定,使之生效。

一般會在.bash_profile檔案中顯式呼叫.bashrc。登陸linux啟動bash時首先會

去讀取~/.bash_profile檔案,這樣~/.bashrc也就得到執行了,你的個性化設

置也就生效了。

Linux下profile和bashrc的區別

在做環境變數配置時涉及到了這兩個檔案,故在網上找了一下它們之間的區別,記錄下來方便以後查閱 bashrc與profile的區別 從上面的英文描述可以知道,bashrc和profile的差異在於 1.bashrc是在系統啟動後就會自動執行。2.profile是在使用者登入後才會執行。3.進行設定後,可...

Linux下profile和bashrc四種的區別

etc profile etc bashrc bash profile bashrc很容易混淆,他們之間有什麼區別?它們的作用到底是什麼?1 etc profile 用來設定系統環境引數,比如 path.這裡面的環境變數是對系統內所有使用者生效的。2 etc bashrc 這個檔案設定系統bash ...

Linux下profile和bashrc四種的區別

etc profile etc bashrc bash profile bashrc很容易混淆,他們之間有什麼區別?它們的作用到底是什麼?etc profile 用來設定系統環境引數,比如 path.這裡面的環境變數是對系統內所有使用者生效的。etc bashrc 這個檔案設定系統bash shel...