資源描述:
《profile與bashrc的深入分析》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、/etc/profile: 此文件為系統(tǒng)的每個用戶設(shè)置環(huán)境信息,當用戶第一次登錄時,該文件被執(zhí)行。并從/etc/profile.d目錄的配置文件中搜集shell的設(shè)置./etc/bashrc: 為每一個運行bashshell的用戶執(zhí)行此文件.當bashshell被打開時,該文件被讀取.~/.bash_profile:每個用戶都可使用該文件輸入專用于自己使用的shell信息,當用戶登錄時,該文件僅僅執(zhí)行一次!默認情況下,他設(shè)置一些環(huán)境變量,執(zhí)行用戶的.bashrc文件.~/.bashrc:該文件包含專用于你的bashshell的bash信息,當?shù)卿洉r以及每次打開新的shell時,該該文
2、件被讀取.~/.bash_logout:當每次退出系統(tǒng)(退出bashshell)時,執(zhí)行該文件.另外,/etc/profile中設(shè)定的變量(全局)的可以作用于任何用戶,而~/.bashrc等中設(shè)定的變量(局部)只能繼承/etc/profile中的變量,他們是"父子"關(guān)系.~/.bash_profile是交互式、login方式進入bash運行的~/.bashrc是交互式non-login方式進入bash運行的通常二者設(shè)置大致相同,所以通常前者會調(diào)用后者。*每次bash作為loginshell啟動時會執(zhí)行.bash_profile。主要有(我所知道的)有以下幾種情形:a)每次登錄到服務(wù)器
3、時默認啟動的shellb)“su-l[USER]”時進入的shellc)“bash--login”進入的shell*每次bash作為普通的交互shell(interactiveshell)啟動時會執(zhí)行.bashrc常見的有:i)“su[USER]”進入的shellii)直接運行“bash”命令進入的shell。**注意1,在shell腳本中“#!/usr/bin/bash”啟動的bash并不執(zhí)行.bashrc。因為這里的bash不是??interactiveshell。2,bash作為loginshell(loginbash)啟動時并不執(zhí)行.bashrc。雖然該shell也是inte
4、ractiveshell,??但它不是普通的shell。*一般.bash_profile里都會調(diào)用.bashrc盡管loginbash啟動時不會自動執(zhí)行.bashrc,慣例上會在.bash_profile中顯式調(diào)用.bashrc。,-------------------------------------
5、if[-f~/.bashrc];then
6、??.~/.bashrc
7、fi`-------------------------------------.bash_profile顯示內(nèi)容如下:#.bash_profile#Getthealiasesandfunctionsif[-f~/
8、.bashrc];then??.~/.bashrcfi#UserspecificenvironmentandstartupprogramsPATH=.:$PATH:$HOME/binBASH_ENV=$HOME/.bashrcUSERNAME="root"exportUSERNAMEBASH_ENVPATH用戶登錄后加載profile和bashrc的流程如下:1)/etc/profile-------->/etc/profile.d/*.sh2)$HOME/.bash_profile-------->$HOME/.bashrc---------->/etc/bashrc說明:bash
9、首先執(zhí)行/etc/profile腳本,/etc/profile腳本先依次執(zhí)行/etc/profile.d/*.sh隨后bash會執(zhí)行用戶主目錄下的.bash_profile腳本,.bash_profile腳本會執(zhí)行用戶主目錄下的.bashrc腳本,而.bashrc腳本會執(zhí)行/etc/bashrc腳本至此,所有的環(huán)境變量和初始化設(shè)定都已經(jīng)加載完成.bash隨后調(diào)用terminfo和inputrc,完成終端屬性和鍵盤映射的設(shè)定.其中PATH這個變量特殊說明一下:如果是超級用戶登錄,在沒有執(zhí)行/etc/profile之前,PATH已經(jīng)設(shè)定了下面的路徑:/usr/local/sbin:/us
10、r/local/bin:/sbin:/bin:/usr/sbin:/usr/bin如果是普通用戶,PATH在/etc/profile執(zhí)行之前設(shè)定了以下的路徑:/usr/local/bin:/bin:/usr/bin這里要注意的是:在用戶切換并加載變量,例如su-,這時,如果用戶自己切換自己,比如root用戶再用su-root切換的話,加載的PATH和上面的不一樣.準確的說,是不總是一樣.所以,在/etc/profile腳本中,做了如下的配置:if[`id-