详解/etc/profile、/etc/bash.bahsrc、~/.profile、~/.bashrc的用途
?
? ? ? ? Linux安裝時(shí)可能要修改的配置文件:/etc/profile、/etc/bashrc(ubuntu沒(méi)有這個(gè)文件,對(duì)應(yīng)地,其有/etc/bash.bashrc文件。我用的是ubuntu系統(tǒng),所以下面將一律使用/etc/bash.bashrc來(lái)敘述)、~/.bash_profile、~/.bash_login、~/.profile、~/.bashrc。
我的ubuntu系統(tǒng)(版本為10.04)默認(rèn)情況下,只有/etc/profile、/etc/bash.bahsrc、~/.profile、~/.bashrc這四個(gè)文件。其他文件可以創(chuàng)建。
?
? ? ? ??現(xiàn)在來(lái)簡(jiǎn)單說(shuō)一下這些配置文件。
?
1.這些文件的作用
? ? ? ??這些文件的作用有很多,比如環(huán)境變量的設(shè)定、定制符合自己風(fēng)格的shell、還可以設(shè)置縮寫(xiě)功能,那個(gè)ll命令是 ls –alF命令的縮寫(xiě)。
? ? ? ??相信大家最關(guān)心這些文件在安裝軟件時(shí)候的作用。為什么要配置這些文件?配置后,要不要重啟Linux才能使得生效。
?
? ? ? ??要弄清這些問(wèn)題。首先要知道打開(kāi)一個(gè)終端或者打開(kāi)一個(gè)新shell時(shí)(注意,兩者是不同的。比如在終端里輸入bash,會(huì)進(jìn)入一個(gè)新shell。此時(shí)并沒(méi)有打開(kāi)新終端),會(huì)讀取到哪些文件。
? ? ? ??之所以是要配置這些文件,是因?yàn)檫@些軟件要在環(huán)境變量中添加屬于自己的信息,或者新建一個(gè)屬于自己的環(huán)境變量(如安裝JDK時(shí)要新建一個(gè)JAVA_HOME環(huán)境變量)。系統(tǒng)會(huì)根據(jù)環(huán)境變量里的值,找到軟件的一些文件的路徑。
2.這些文件的訪問(wèn)順序
2.1測(cè)試
? ? ? ??如果對(duì)測(cè)試過(guò)程沒(méi)興趣的,直接跳過(guò)這一步,到結(jié)論部分看結(jié)論。
?
? ? ? ??分別在這個(gè)四個(gè)文件的最后,加入一個(gè)新的環(huán)境變量TESTBASH。每一個(gè)文件都為這個(gè)環(huán)境變量加入不同的值。如下圖所示:
/etc/profile ?
/etc/bash.bashrc?
~/.profile?
~/.bashrc?
?
? ? ? ??都保存后,在原來(lái)這個(gè)終端輸入$export(這個(gè)命令可以用來(lái)導(dǎo)入和查看環(huán)境變量),并沒(méi)有在輸出中看到這個(gè)TESTBASH。現(xiàn)在輸入$bash?,打開(kāi)一個(gè)新的shell。再輸入$export?可以看到輸出已經(jīng)有這個(gè)環(huán)境變量了(如果在一大串輸出中沒(méi)有找到這個(gè)TESTBASH,那么就用命令$echo $TESTBASH)。并且,該環(huán)境變量的值為: /etc/bash.bashrc:/home/luotuo/.bashrc。
? ? ? ??現(xiàn)在打開(kāi)一個(gè)新的終端。輸入$export?可以看到其結(jié)果和輸入$bash命令,再輸入$export?一樣。只有其中兩項(xiàng)。
?
? ? ? ??現(xiàn)在輸入$su root?切換到root用戶。再輸入$export?其結(jié)果是在原來(lái)的基礎(chǔ)上加上了?/home/luotuo/.bashrc:/etc/bash.bashrc。
? ? ? ??輸入$exit?退出root。然后再輸入$su –l root?切換到root用戶,此時(shí)輸入$export?看到其結(jié)果僅僅為?/etc/bash.bashrc:/etc/profile。
? ? ? ??(這兩種方式是不同的。分別叫做nonlogin shell和login shell。另外,在終端輸入bash打開(kāi)一個(gè)新的shell也是non login?)
?
? ? ? ??現(xiàn)在是時(shí)候重啟Linux了。
?
? ? ? ??重啟之后,在終端輸入?$export?,其結(jié)果為: ??
? ? ? ??已經(jīng)有/etc/profile和/etc/bash.bashrc了。
? ? ? ??此時(shí),輸入$bash?打開(kāi)一個(gè)新的shell 。再輸入$export?.可以看到:
? ? ? ??
? ? ? ??是在原來(lái)的基礎(chǔ)上加入了 /etc/bash.bashrc:/home/luotuo/.bashrc
?
? ? ? ??輸入$exit?退出這個(gè)shell(注意,此時(shí)這個(gè)終端是沒(méi)有被關(guān)閉了。因?yàn)樵谶@個(gè)終端打開(kāi)了兩個(gè)shell。一個(gè)exit只能退出一個(gè)).
? ? ? ??此時(shí),輸入$su root?切換到root用戶。然后再輸入$export?。可以看到輸出為:
? ? ? ??
? ? ? ??在原來(lái)的基礎(chǔ)上加入了/etc/bash.bashrc。
? ? ? ??現(xiàn)在輸入$pwd?,可以看到其路徑為:
? ? ? ? ?
? ? ? ??現(xiàn)在輸入$exit?退出這個(gè)root。然后輸入$su –l root?切換到root用戶。此時(shí)再輸入$export?其結(jié)果為:
? ? ? ??
? ? ? ??現(xiàn)在輸入$pwd,可以看到其路徑為:
? ? ? ? ?
? ? ? ??兩者有不同的路徑。后者是轉(zhuǎn)到了root用戶的用戶目錄下,而前者還是在之前所在的目錄。
2.2、結(jié)論
? ? ? ??從測(cè)試過(guò)程可以看到。打開(kāi)一個(gè)新的shell(包括打開(kāi)一個(gè)新終端和在終端上輸入bash),都會(huì)重新讀取/etc/bash.bashrc 和 ~/.bashrc文件里面的內(nèi)容。
? ? ? ??而Linux啟動(dòng)登錄時(shí)會(huì)讀取/etc/profile和~/.profile文件的內(nèi)容。所以,在測(cè)試的時(shí)候,重啟登錄時(shí)會(huì)讀取/etc/profile和~/.profile文件的內(nèi)容(此時(shí)并不讀取/etc/bash.bashrc和~/.bashrc文件)。然后再打開(kāi)終端時(shí),會(huì)去讀取/etc/bash.bashrc和?~/.bashrc文件。這就出現(xiàn)了那種結(jié)果。
?
? ? ? ??使用login和non login術(shù)語(yǔ)來(lái)說(shuō),就是使用login 方式是會(huì)讀取/etc/profile 和 ~/.profile文件。使用non login方式的話,會(huì)讀取/etc/bash.bashrc 和 ~/.bashrc文件的內(nèi)容。
也就是說(shuō)/etc/profile 和 ~/.profile文件是在login時(shí)才會(huì)讀取。所以,在不使用su命令的情況下,只有在Linux啟動(dòng)登錄的時(shí)候才會(huì)被讀取(這也就導(dǎo)致了有些軟件安裝后,要重啟才能生效)。
?
? ? ? ??因?yàn)槲业?/span>ubuntu沒(méi)有~/.bash_profile和?~/.bash_login文件。如果有這兩個(gè)文件的話,那么用login方式登錄,將只讀取?~/.bash_profile?、~/.bash_login、~/.profile三個(gè)中的一個(gè)。其讀取順序在上面的排序順序。
?
? ? ? ??說(shuō)了這么多。到講安裝軟件時(shí)的修改這些文件的配置信息 了。安裝軟件修改這個(gè)文件,一般是為了在這個(gè)文件中添加用于那些軟件的環(huán)境變量。在這些配置文件中都可以添加環(huán)境變量。但由于,有些文件會(huì)被讀取,有些文件卻不會(huì)被讀取(這個(gè)上面已經(jīng)說(shuō)了),所以在不同文件下的配置信息的有效性或者說(shuō)生效日期就有所不同了。這也導(dǎo)致了在這些文件添加配置信息,要不要重啟的問(wèn)題。
?
? ? ? ??如果是在/etc/bash.bashrc 和 ~/.bashrc文件中添加配置信息,那么打開(kāi)一個(gè)新的shell,就生效了,可以用了(因?yàn)榇蜷_(kāi)新的shell會(huì)讀取這個(gè)兩個(gè)文件)。也可以輸入$source /etc/bash.bashrc或者$./etc/bash.bashrc命令(?.和/之間還有一個(gè)空格)來(lái)使得在本shell中,也可以生效使用。
? ? ? ??如果是在/etc/profile 和 ~/.profile 文件中添加配置信息。那么就只能重啟了。因?yàn)檫@個(gè)兩個(gè)文件只會(huì)在login 下才會(huì)讀取。當(dāng)然,也是可以使用$source /etc/profile?命令的。但也只能在使用過(guò)這個(gè)命令的shell才能使用。
?
?
3.總結(jié)
? ? ? ??如果為了一完成配置信息就能使用,那么就不用在/etc/profile 和 ~/.profile文件中添加關(guān)于軟件的配置信息。而是在/etc/bash.bashrc 或者 ~/.bashrc 中添加,這樣就能馬上使用了。
總結(jié)
以上是生活随笔為你收集整理的详解/etc/profile、/etc/bash.bahsrc、~/.profile、~/.bashrc的用途的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Linux下ps -ef和ps aux的
- 下一篇: pthread_join和pthread