Linux中profile、bashrc的區別和聯繫

1. profile文件

1.1 profile文件的作用

profile(/etc/profile),用於設置系統級的環境變量和啓動程序,在這個文件下配置會對所有用戶生效。

當用戶登錄(login)時,文件會被執行,並從/etc/profile.d目錄的配置文件中查找shell設置。

1.2 在profile中添加環境變量

一般不建議在/etc/profile文件中添加環境變量,因爲在這個文件中添加的設置會對所有用戶起作用。

當必須添加時,我們可以按以下方式添加:

如,添加一個HOST值爲linuxprobe.com的環境變量:

export HOST=linuxprobe.com

添加時,可以在行尾使用;號,也可以不使用。

一個變量名可以對應多個變量值,多個變量值需要使用:進行分隔。

添加環境變量後,需要重新登錄才能生效,也可以使用source命令強制立即生效:

source /etc/profile

查看是否生效可以使用echo命令:

$ echo $HOST

linuxprobe.com

2. bashrc文件

bashrc文件用於配置函數或別名。bashrc文件有兩種級別:

系統級的位於/etc/bashrc、用戶級的位於~/.bashrc,兩者分別會對所有用戶和當前用戶生效。

bashrc文件只會對指定的shell類型起作用,bashrc只會被bash shell調用。

3. bash_profile文件

bash_profile只對單一用戶有效,文件存儲位於~/.bash_profile,該文件是一個用戶級的設置,可以理解爲某一個用戶的profile目錄下。

這個文件同樣也可以用於配置環境變量和啓動程序,但只針對單個用戶有效。

和profile文件類似,bash_profile也會在用戶登錄(login)時生效,也可以用於設置環境變理。

但與profile不同,bash_profile只會對當前用戶生效。

4. 差異總結

4.1 首先讀入全局環境變量設定檔/etc/profile,然後根據其內容讀取額外的設定的文檔,如/etc/profile.d和/etc/inputrc;

4.2 根據不同使用者帳號,於其家目錄內讀取~/.bash_profile;

讀取失敗則會讀取~/.bash_login;

再次失敗則讀取~/.profile(這三個文檔設定基本上無差別,僅讀取上有優先關係);

4.3 最後,根據用戶帳號讀取~/.bashrc。

至於/.profile與/.bashrc都具有個性化定製功能,但~/.profile可以設定本用戶專有的路徑、環境變量等,它只能登入的時候執行一次。

~/.bashrc也是某用戶專有設定文檔,可以設定路徑、命令別名,每次shell script的執行都會使用它一次。

這三種文件類型的差異用一句話表述就是:

/etc/profile,/etc/bashrc 是系統全局環境變量設定;/.profile,/.bashrc用戶家目錄下的私有環境變量設定。

另外某網友總結如下:

  • /etc/profile,/etc/bashrc 是系統全局環境變量設定
  • /.profile,/.bashrc用戶家目錄下的私有環境變量設定
    當登入系統時候獲得一個shell進程時,其讀取環境設定檔有三步
    1首先讀入的是全局環境變量設定檔/etc/profile,然後根據其內容讀取額外的設定的文檔,如
    /etc/profile.d和/etc/inputrc
    2然後根據不同使用者帳號,去其家目錄讀取/.bash_profile,如果這讀取不了就讀取/.bash_login,這個也讀取不了纔會讀取
    ~/.profile,這三個文檔設定基本上是一樣的,讀取有優先關係
    3然後在根據用戶帳號讀取~/.bashrc
    至於/.profile與/.bashrc的不區別
    都具有個性化定製功能
    ~/.profile可以設定本用戶專有的路徑,環境變量,等,它只能登入的時候執行一次
    ~/.bashrc也是某用戶專有設定文檔,可以設定路徑,命令別名,每次shell script的執行都會使用它一次

1)修改/etc/profile文件
推薦使用這種方法,因爲所有用戶的shell都有權使用這些環境變量,缺點是可能會給系統帶來安全性問題。 這裏是針對所有的用戶的,所有的shell;

[root@test ~]# vim /etc/profile
....
export PATH=$PATH:/usr/local/mysql/bin
 
使用source命令使修改立刻生效: 
[root@test ~]# source  /etc/profile
 

2)修改.bashrc文件,這種方法更爲安全,它可以把使用這些環境變量的權限控制到用戶級別,這裏是針對某一個特定的用戶,如果需要給某個用戶權限
使用這些環境變量,只需要修改其個人用戶主目錄下的.bashrc文件就可以了。

[root@test ~]# vim /root/.bashrc
export PATH=$PATH:/usr/local/mysql/bin
 
[root@test ~]# source  /root/.bashrc

需要注意的是:
在/etc/profile裏設置系統環境變量時,路徑末尾不能以"/"結尾,否則將導致整個PATH變量出錯。

[app@test ~]$ vim ~/.bashrc
......
KETTLE_HOME=/data/nstc/kettle3.2
export KETTLE_HOME
 
注意:配置好環境變量後,要記得export輸出這個變量,否則如下source後無效!
[app@test ~]$ source .bashrc //使之生效
[app@test ~]$ echo $KETTLE_HOME
/data/nstc/kettle3.2
[app@test ~]$ env
.........
KETTLE_HOME=/data/nstc/kettle3.2

================ 設置終端登錄超時時間================

遠程登錄linux服務器,如何設置終端失效時間(即過了多久不操作,終端即將失效)。方法如下:

[root@mq-console-nameserver ~]# vim /etc/profile
......
export TMOUT=600
[root@mq-console-nameserver ~]# source /etc/profile
 

如上設置後,登錄這臺服務器的終端在10分鐘內不做操作,則該終端就將失效!

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