本文主要整理自以下博文:
.bash_profile和.bashrc的什么區別及啟動過程
linux環境變量設置方法總結(PATH/LD_LIBRARY_PATH)
.bash_profile 和 .bashrc 區別
相關文件介紹
/etc/profile: 此文件為系統的每個用戶設置環境信息,當用戶第一次登錄時,該文件被執行。並從 /etc/profile.d 目錄的配置文件中搜集shell的設置。
/etc/bashrc: 為每一個運行 bash shell 的用戶執行此文件。當 bash shell 被打開時,該文件被讀取。
~/.bash_profile: 每個用戶都可使用該文件輸入專用於自己使用的 shell 信息,當用戶登錄時,該文件僅僅執行一次!默認情況下,其他設置的一些環境變量,執行用戶的 .bashrc 文件。
~/.bashrc: 該文件包含專用於登陸用戶的 bash shell 的 bash 信息,當登錄時以及每次打開新的 shell 時,該該文件被讀取。
~/.bash_logout: 當每次退出 bash shell 時,執行該文件。
另外,/etc/profile中設定的變量(全局)的可以作用於任何用戶,而~/.bashrc等中設定的變量(局部)只能繼承/etc/profile中的變量,他們是"父子"關系。
~/.bash_profile 是交互式、login 方式進入 bash 運行的。
~/.bashrc 是交互式 non-login 方式進入 bash 運行的。
通常二者設置大致相同,前者會調用后者。
啟動過程
在登錄Linux時要執行文件的過程如下:
在剛登錄 Linux 時,首先啟動 /etc/profile 文件,然后再啟動用戶目錄下的 ~/.bash_profile、 ~/.bash_login 或 ~/.profile 文件中的其中一個(根據不同的 Linux 操作系統的不同,命名不一樣),
執行的順序為:~/.bash_profile、 ~/.bash_login、 ~/.profile。
如果 ~/.bash_profile 文件存在的話,一般還會執行 ~/.bashrc文件。
因為在 ~/.bash_profile 文件中一般會有下面的代碼:
# Get the aliases and functions if [ -f ~/.bashrc ] ; then . ./bashrc fi
~/.bashrc 中,一般還會有以下代碼:
# Source global definitions 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
環境變量設置
PATH: 可執行程序的查找路徑
查看當前環境變量:
echo $PATH
設置:
方法一:export PATH=PATH:/XXX 但是登出后就失效
方法二:修改~/.bashrc或~/.bash_profile或系統級別的/etc/profile
1. 在其中添加例如export PATH=/opt/ActivePython-2.7/bin:$PATH
2. source .bashrc (Source命令也稱為“點命令”,也就是一個點符號(.)。source命令通常用於重新執行剛修改的初始化文件,使之立即生效,而不必注銷並重新登錄)
LD_LIBRARY_PATH: 動態庫的查找路徑
設置:
方法一: export LD_LIBRARY_PATH=LD_LIBRARY_PATH:/XXX 但是登出后就失效
方法二: 修改 ~/.bashrc 或 ~/.bash_profile 或系統級別的 /etc/profile
1. 在其中添加例如 export PATH=/opt/ActiveP/lib:$LD_LIBRARY_PATH
2. source .bashrc
方法三:這個沒有修改 LD_LIBRARY_PATH 但是效果是一樣的實現動態庫的查找,
1. /etc/ld.so.conf 下面加一行/usr/local/mysql/lib
2. 保存過后 ldconfig 一下(ldconfig 命令的用途,主要是在默認搜尋目錄(/lib 和 /usr/lib)以及動態庫配置文件 /etc/ld.so.conf 內所列的目錄下,搜索出可共享的動態鏈接庫(格式如前介紹,lib*.so*),進而創建出動態裝入程序(ld.so)所需的連接和緩存文件.緩存文件默認為 /etc/ld.so.cache,此文件保存已排好序的動態鏈接庫名字列表。)
方法三設置稍微麻煩,好處是比較不受用戶的限制。
刪除環境變量
unset PATH
unset LD_LIBRARY_PATH
