1. 程式人生 > >.bash_profile和.bashrc

.bash_profile和.bashrc

我們在CentOS上面配置程式時,看到有些地方寫著在.bash_profile中寫入xxx,有些地方寫著在.bashrc中寫入xxx。到底這兩個檔案有什麼區別呢?

根據bash man page,.bash_profile會在登入shell中生效,.bashrc會在互動非登入shell中生效。登入shell指的是我們輸入使用者名稱和密碼之後開啟的shell,比如我們通過ssh登入到遠端主機,開啟的shell就是登入shell,此時寫在.bash_profile中的命令會生效。互動非登入shell指的是登入之後開啟的不需要輸入使用者名稱和密碼就可以操作的互動shell,非互動shell的例子是執行shell指令碼時指定的shell,它執行完指令碼後自動退出,沒有和人互動的過程。

知道了它們的區別之後我們就可以明白它們不是一樣的,各有各的用途,但是如果要維護兩個檔案的話顯得很麻煩,我們可以只在.bashrc中寫入需要的命令,然後在.bash_profile的開頭加入這樣的一條命令:

if [ -f ~/.bashrc ]; then
   source ~/.bashrc
fi

if [ -f ~/.bashrc ]的意思是如果 ~/.bashrc檔案存在,且它是普通檔案,則返回true,這時候就會執行source ~/.bashrc命令。source命令的作用是把指定檔案中的命令載入到當前shell,跟MySQL中執行.sql檔案的source命令差不多一個意思。