Bash的環境配置檔案

2021-07-05 20:29:39 字數 2951 閱讀 9125

在開始介紹bash的配置檔案之前,需要了解的就是login shell與non-login shell。這兩個shell區別如下:

*  login shell:就是取得bash時需要完整的登陸流程,就是login shell。如:由tty1登陸,需輸入使用者名稱和密碼,此時取得的bash就是login shell了。

*  non-login shell:取得bash介面的方法不需要重複登陸的舉動。如:在x-window環境下來啟動終端,測試終端介面不需要再次輸入帳戶與密碼,那個bash的環境就是non-login shell了;或在原來的bash環境下再次下達bash的這個指令,也不需要輸入帳戶與密碼,那個第二個bash也是non-login shell

*  上面兩個shell不同之處在於這兩個取得的bash時,讀取的配置檔案不同。

****************************************

一、系統設定值 /etc/profile檔案(login shell才會讀取)

這是系統整體的配置檔案,該配置檔案可以利用登陸者的uid來決定很多重要的變數資訊,這也是每個使用者登陸取得bash時一定會讀取的配置檔案,所以想要對所有使用者設定整體環境,可對其進行修改。該檔案設定的變數主要有:

*  path:會根據uid決定path變數要不要含有sbin的系統指令目錄;

*  mail:根據帳戶設定/var/spool/mail/賬號名稱;

*  user:根據使用者的賬號設定此變數內容;

*  hostname:依據主機的hostname指令設定此變數的內容;

*  histsize:歷史命令記錄數,一般設定成50,比較安全.

/etc/profile不止完成上述內容,還會呼叫外部的設定資料:

*  /etc/inputrc:用來設定bash的熱鍵、[tab]是否有聲音等資訊;

*  /etc/profile.d/*.sh:該目錄下的檔案規定了bash的操作介面、語系以及一些公共的命令別名。

*  /etc/sysconfig/i18n:這個檔案是由/etc/profile.d/lang.sh呼叫的,是決定bash預設使用何種語系的重要配置檔案。

二、個人設定值 (login shell才會讀)

bash在讀取完/etc/profile配置檔案後,接下來會讀取使用者的個人配置檔案。在login shell的bash環境中,所讀取的個人設定主要有三個,依序分別是:

這三個個人設定檔案在個人家目錄的幾個隱藏檔案中.(上面幾個檔案都是隱藏檔案,需要使用ls -al才能顯示).

其實bash的login shell設定只會讀取上面三個檔案中的乙個,一般預設是以~/.bash_profile檔名存在.之所以有這麼多的檔案,是因為其他shell轉換過來的使用者的習慣,它們的讀取的順序依照上面

~/.bash_profile --> ~/.bash_login --> ~/.profile的順序。也就是說,如果~/.bash_profile存在,那麼其他兩個檔案不論是否存在均不會被讀取。若~/.bash_profile不存在才會讀取~/.bash_login,而前兩者均不存在才會讀取~/.profile檔案。下面介紹一下~/.bash_profile檔案的內容(以root使用者為例):

[root@localhost ~]# cat ~/.bash_profile # .bash_profile # get the aliases and functions if [ -f ~/.bashrc ]; then #判斷~/.bashrc是否存在,存在則執行該檔案 . ~/.bashrc fi # user specific environment and startup programs path=$path:$home/bin #根據使用者進行特定設定 export path unset username

預設情況下,歷史命令就記錄在這裡.而這個檔案記錄能夠記錄在這裡.而這個檔案能夠記錄多少資料,則與history變數有關.每次登入bash後,bash會先讀取這個檔案,將

這個檔案記錄"當我登出後,系統再幫我做完什麼操作後才離開".可以讀取這個檔案

的內容,預設情況下,登出時,bash只是清掉螢幕的訊息.不過,也可以將一些備份或者其他你認為重要的工作寫在這個檔案中.

三、 ~/.bashrc(non-login shell會讀取)

當你取得non-login shell時,該bash僅僅會讀取~/.bashrc檔案,該檔案內容為:

[root@localhost ~]# cat ~/.bashrc # .bashrc # user specific aliases and functions #使用者的個人設定 alias rm='rm -i' alias cp='cp -i' alias mv='mv -i' # source global definitions #整體環境設定 if [ -f /etc/bashrc ]; then . /etc/bashrc fi

在該配置檔案中看到會讀取/etc/bashrc,那麼該檔案主要用於:

*  依據不同的uid給出umask的值;

*  依據不同的uid給出提示字元(就是ps1變數)

*  呼叫/etc/profile.d/*.sh的設定

四、 歸納

最後我們來看一下整個的login shell的流程:

實線的方向是主要流程,虛線表示被呼叫的配置檔案。從上面流程,我們可以知道在login shell的環境下,最終被讀取的配置檔案是「~./bashrc」。所以,我們可以將個人需要的設定寫在該檔案即可。

ps:另外說明一下,由於/etc/profile與~/.bash_profile都是在取得login shell的時候才會讀取配置檔案,所以,如果你將自己的特定設定寫入上述檔案後,通常需要退出後再登陸配置檔案才能生效。其他我們可以留用source命令或小數點(.)將配置檔案的內容讀入當前shell環境中。

bash環境配置檔案

login shell 取得bash時需要完整的登陸流程。no login shell 取得bash介面的方法不需要重複登陸的舉動。login 讀取兩個配置檔案 1.etc profile 系統整體設定,不要修改。2.bash profile 或 bash login 或 profile 使用者個人...

bash環境配置檔案

定義變數 普通變數 variable name string 系統變數 export variable name string 注意 父程序中的環境變數在子程序中依然有效,但是父程序中的普通變數在子程序中是無效的 但是在子程序中定義的任何變數 普通以及系統 在父程序中是無效的 若是在bash中設定變...

bash 的環境配置檔案

你是否會覺得奇怪,怎麼我們什麼動作都沒有進行,但是一進入 bash 就取得一堆有用的變數了?這是因為系統有一些環境配置檔案案的存在,讓 bash 在啟動時直接讀取這些配置檔案,以規劃好 bash 的操作環境啦!而這些配置檔案又可以分為全體系統的配置檔案以及使用者個人偏好配置檔案。要注意的是,我們前幾...