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分鐘內不做操作,則該終端就將失效!