linux的環境配置.profile&&/etc/profile、.bashrc && /etc/bashrc

0 Linux的環境配置文件.bashrc

.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權限,也不會影響其他用戶。

0.1 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

0.2 別名

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

 0.3 提示符

  當打開一個控制檯(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''中。這樣,每次打開控制檯或終端窗口時,都會生效。

0.4  修改生效

source  ~/.bashrc

1 Linux的環境配置文件.profile

在Unix/Linux系統中有兩個對用戶而言必不可少的文件——etc目錄下的profile文件和用戶主目錄($HOME)下的.profile文件。

前者是系統文件,對系統下全體用戶起作用,後者是用戶自己的"私人"文件。它們在用戶登錄(Login註冊)時,被系統自動執行,爲用戶設置工作環境,若使用得當,可發揮強大作用。etc目錄下的profile文件是每一個用戶登錄時,操作系統首先執行的文件,然後再將控制
權交給用戶主目錄下的.profile文件,當系統給出主提示符($PS1)後,用戶就可以開始自己的工作了。

(1)./etc/profile:是全局profile文件,設置後會影響到所有用戶
(2)./home/username/.profile或.bash_profile是針對特定用戶的,可以針對用戶,來配置自己的環境變量。
Bash登陸(login)的時候,profile執行的順序:先執行全局/etc/profile -> 接着bash會檢查使用者的HOME目錄中,是否有 .bash_profile 或者 .bash_login或者 .profile,若有,則會執行其中一個,執行順序爲:    .bash_profile 最優先 > .bash_login其次 > .profile 

(3)配置環境變量

我們可以在 .proflie 文件末尾加入下面這句代碼:

export PATH="$PATH:$HOME/scripts"

然後,我們需要退出終端再重新登錄使修改生效。

如果你使用 Ubuntu 及其衍生髮行版,那麼就需要修改 .pam_environment 文件,而不是 .profile文件。同樣地,在該文件末尾加入這麼一句代碼:

PATH DEFAULT=${PATH}:/home/@{PAM_USER}/scripts

 

2  bashrc和profile的差異

bashrc和profile的差異在於:

1. profile是在用戶登錄後纔會運行。

2. bashrc是在啓動終端或者在系統啓動運行~/.bash_profie文件時時候運行的。

3. 進行設置後,可運用source bashrc命令更新bashrc,也可運用source profile命令更新profile。

PS:通常我們修改bashrc,有些linux的發行版本不一定有profile這個文件

3 關於登錄linux時,/etc/profile、~/.bash_profile等幾個文件的執行順序

在登錄Linux時要執行文件的過程如下:

在剛登錄Linux時,首先啓動 /etc/profile 文件,然後再啓動用戶目錄下的 ~/.bash_profile、 ~/.bash_login或 ~/.profile文件中的其中一個,執行的順序爲:~/.bash_profile、 ~/.bash_login、 ~/.profile。如果 ~/.bash_profile文件存在的話,一般還會執行 ~/.bashrc文件。因爲在 ~/.bash_profile文件中一般會有下面的代碼:

if [ -f ~/.bashrc ] ; then

. ./bashrc

fi

~/.bashrc中,一般還會有以下代碼:

if [ -f /etc/bashrc ] ; then

. /bashrc

fi

所以,~/.bashrc會調用 /etc/bashrc文件。最後,在退出shell時,還會執行 ~/.bash_logout文件。

執行順序爲:/etc/profile -> (~/.bash_profile | ~/.bash_login | ~/.profile) -> ~/.bashrc -> /etc/bashrc -> ~/.bash_logout

4 關於各個文件的作用域,說明如下

(1)/etc/profile: 此文件爲系統的每個用戶設置環境信息,當用戶第一次登錄時,該文件被執行. 並從/etc/profile.d目錄的配置文件中搜集shell的設置。

(2)/etc/bashrc: 爲每一個運行bash shell的用戶執行此文件.當bash shell被打開時,該文件被讀取。

(3)~/.bash_profile: 每個用戶都可使用該文件輸入專用於自己使用的shell信息,當用戶登錄時,該文件僅僅執行一次!默認情況下,他設置一些環境變量,執行用戶的.bashrc文件。

(4)~/.bashrc: 該文件包含專用於你的bash shell的bash信息,當登錄時以及每次打開新的shell時,該該文件被讀取。

(5)~/.bash_logout:當每次退出系統(退出bash shell)時,執行該文件. 另外,/etc/profile中設定的變量(全局)的可以作用於任何用戶,而~/.bashrc等中設定的變量(局部)只能繼承/etc /profile中的變量,他們是”父子”關係。

(6)~/.bash_profile 是交互式、login 方式進入 bash 運行的~/.bashrc 是交互式 non-login 方式進入 bash 運行的通常二者設置大致相同,所以通常前者會調用後者。
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章