簡(jiǎn)介
/etc/profile文件是系統(tǒng)的配置文件,修改該文件后,必須source一下修改才會(huì)生效,對(duì)每個(gè)用戶生效;
/etc/bashrc文件是bash打開(kāi)時(shí)執(zhí)行的文件,修改后重啟bash即生效;
~/.bash_profile是每個(gè)用戶專屬的配置文件,修改后需要source一下才會(huì)生效(和.login或者.profile文件相同,為不同shell的不同叫法);
~/.bashrc文件是用戶下的每次打開(kāi)shell時(shí)執(zhí)行的文件,修改后重新打開(kāi)shell即生效。
區(qū)別和聯(lián)系:
(1)當(dāng)在用戶目錄下找不到.bash_profile或者.bashrc文件時(shí),會(huì)去讀取系統(tǒng)的配置文件(存疑);
(2)/etc/profile設(shè)置的變量作用于全局,而~/.bashrc文件中的變量繼承于/etc/profile中的變量,只作用于局部,兩者之間屬于父子關(guān)系;
(3)~/.bash_profile是交互式、login方式進(jìn)入bash運(yùn)行的;而~/.bashrc是交互式的,non-login方式進(jìn)入bash運(yùn)行,兩者大致相同,可以重啟生效,也可以source生效;
(4)~/.bash_history是bash shell的歷史記錄文件,記錄了bash shell中輸入的所有命令(我自己的暫時(shí)找不到,感覺(jué)應(yīng)該要設(shè)置,不是自動(dòng)保存的)。
?
如何查看自己使用的是哪一個(gè)shell
echo $SHELL
查看系統(tǒng)安裝了哪些shell
cat /etc/shells
切換bash:
chsh -s /bin/bash
切換zsh:
chsh -s /bin/zsh
交互式shell和非交互式shell,什么是login shell 和non-login shell
交互式模式:就是shell等待你的輸入,并且執(zhí)行你提交的命令。這種模式被稱作交互式是因?yàn)閟hell與用戶進(jìn)行交互。這種模式也是大多數(shù)用戶非常熟悉的:登錄、執(zhí)行一些命令、簽退。當(dāng)你簽退后,shell也終止了。
非交互式模式:在這種模式下,shell不與你進(jìn)行交互,而是讀取存放在文件中的命令,并且執(zhí)行它們。當(dāng)它讀到文件的結(jié)尾,shell也就終止了。
login shell:就是需要輸入用戶名及密碼登錄的shell,如開(kāi)機(jī)shell登陸、ssh登陸、su - username(從root切換到其他用戶時(shí)無(wú)需密碼)。
non-login shell:無(wú)需輸入密碼,如bash、su username、圖形界面打開(kāi)bash。
bashrc用于交互式non-login shell,而profile用于交互式login shell。系統(tǒng)中存在許多bashrc和profile文件?
?
交互式登錄(login)模式:主要用來(lái)設(shè)置一些系統(tǒng)變量
/etc/profile:(針對(duì)所有用戶)此文件為系統(tǒng)的每個(gè)用戶設(shè)置環(huán)境信息,當(dāng)用戶第一次登錄時(shí),該文件被執(zhí)行并從/etc/profile.d目錄的配置文件中搜集shell的設(shè)置。
~/.profile:(針對(duì)個(gè)人)若bash是以login方式執(zhí)行時(shí),讀取~/.bash_profile,若它不存在,則讀取~/.bash_login,若前兩者不存在,讀取~/.profile.另外,圖形模式登錄時(shí),此文件將被讀取,即使存在~/.bash_profile和~/.bash_login。
~/.bash_profile:每個(gè)用戶都可使用該文件輸入專用于自己使用的shell信息,當(dāng)用戶登錄時(shí),該文件僅僅執(zhí)行一次!默認(rèn)情況下,他設(shè)置一些環(huán)境變量,執(zhí)行用戶的.bashrc文件。
?
~/.bash_login:若bash是以login方式執(zhí)行時(shí),讀取~/.bash_profile,若它不存在,則讀取~/.bash_login,若前兩者不存在,讀取~/.profile。
?交互式非登錄(non login)模式:主要用來(lái)保存一些bash的設(shè)置
1、/etc/bashrc(系統(tǒng)級(jí)(全局)配置文件):為每一個(gè)運(yùn)行bash shell的用戶執(zhí)行此文件, 當(dāng)bash shell被打開(kāi)時(shí)或在用戶主目錄下找不到.bashrc時(shí),就會(huì)讀取這該文件。
2、~/.bashrc?:該文件包含專用于你的bash shell的bash信息,當(dāng)?shù)卿洉r(shí)以及每次打開(kāi)新的shell時(shí),該文件被讀取.(每個(gè)用戶都有一個(gè).bashrc文件,在用戶目錄下)。
此文件類似于 /etc/bashrc,不需要重啟生效,重新打開(kāi)一個(gè)bash即可生效,/etc/bashrc??對(duì)所有用戶新打開(kāi)的bash都生效,但?~/.bashrc?只對(duì)當(dāng)前用戶新打開(kāi)的bash生效。但一般 來(lái)說(shuō)都會(huì)在?~/.bash_profile?里調(diào)用?~/.bashrc?腳本以便統(tǒng)一配置用戶環(huán)境。
?~/.bashrc?等中設(shè)定的變量(局部)只能繼承?/etc/profile?中的變量,他們是"父子"關(guān)系.
3、~/.bash_logout:當(dāng)每次退出系統(tǒng)(退出bash shell)時(shí),執(zhí)行該文件。
4、~/.bash_history:是bash shell的歷史記錄文件,里面記錄了你在bash shell中輸入的所有命令??赏ㄟ^(guò)HISSIZE環(huán)境變量設(shè)置在歷史記錄文件里保存記錄的條數(shù)。alias l = ‘ls -l’是設(shè)置別名的語(yǔ)句,把它放在這些配置文檔中就可使我們能用簡(jiǎn)單的’l’命令,代替’ls -l’命令。
另外:不要輕易修改?/etc/environment
?文件。
下面是在本機(jī)的幾個(gè)例子:?
首先需要明確的是,讀取~/.bash_profile,該文件便會(huì)去讀取~/.bashrc,而~/.bashrc又會(huì)去讀取/etc/bashrc。所以只要讀取~/.bash_profile,便會(huì)同時(shí)讀取~/.bashrc與/etc/bashrc。
1. 圖形模式登錄時(shí),順序讀?。?etc/profile和~/.profile。
2. 圖形模式登錄后,打開(kāi)終端時(shí),順序讀?。簙/.bashrc和/etc/bashrc。
3. 文本模式登錄時(shí),順序讀取:/etc/profile,~/.bash_profile,~/.bashrc和/etc/bashrc。?
4. 從其它用戶su到該用戶,則分兩種情況: ? ?
? ?(1)如果帶-l參數(shù)(或-參數(shù),--login參數(shù)),如:su -l username,則bash是lonin的,它將順序讀取以下配置文件:/etc/profile,~/.bash_profile,~/.bashrc和/etc/bashrc。 ? ?
? ?(2)如果沒(méi)有帶-l參數(shù),則bash是non-login的,它將順序讀取:~/.bashrc和/etc/bashrc并從父進(jìn)程繼承其環(huán)境變量。
5. 注銷時(shí),或退出su登錄的用戶,如果是longin方式,那么bash會(huì)讀?。簙/.bash_logout
6. 執(zhí)行自定義的shell文件時(shí),若使用“bash -l a.sh”的方式,則bash會(huì)讀取行:/etc/profile,~/.bash_profile,~/.bashrc和/etc/bashrc,用sh -l a.sh調(diào)用bash,它將會(huì)執(zhí)行/etc/profile以及 ~/.profile。若使用其它方式,如:bash a.sh, ./a.sh,sh a.sh,則不會(huì)讀取上面的任何文件,只能從其父進(jìn)程處繼承環(huán)境變量,像alias等就無(wú)法繼承使用了。
7. 上面的例子凡是讀取到~/.bash_profile的,若該文件不存在,則讀取~/.bash_login,若前兩者不存在,讀取~/.profile。?
?
參考:/etc/profile 跟 ~/.bashrc ~/.bash_profile的區(qū)別_黑皮磊的博客-CSDN博客文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-465879.html
記一次刪除.bash_profile文件_vim ~/.bash_profile_comeoncode的博客-CSDN博客文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-465879.html
到了這里,關(guān)于/etc/profile和/etc/bashrc、~/.bash_profile和~/.bashrc、.zshrc的區(qū)別的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!