Řešení 1:
.bash_profile
a .bashrc
jsou specifické pro bash
, zatímco .profile
je čteno mnoha shelly bez jejich vlastních konfiguračních souborů specifických pro shell. (.profile
byl používán původním Bourne shellem.) .bash_profile
nebo .profile
je čteno přihlašovacími shelly spolu s .bashrc
; subshells pouze pro čtení .bashrc
. (Mezi řízením úloh a moderními okenními systémy, .bashrc
sám o sobě moc nezvykne. Pokud používáte screen
nebo tmux
, obrazovky/okna obvykle spouštějí dílčí shelly namísto přihlašovacích shellů.)
Myšlenka za tím byla, že jednorázové nastavení provedl .profile
(nebo jeho verze specifická pro shell) a věci pro jednotlivé shelly od .bashrc
. Například obecně chcete načíst proměnné prostředí pouze jednou za relaci místo toho, abyste je narušili pokaždé, když spustíte subshell v rámci relace, zatímco vždy chcete své aliasy (které se nešíří automaticky jako proměnné prostředí).
Další důležité konfigurační soubory shellu:
/etc/bash_profile
(záložní /etc/profile
) se čte před .profile
uživatele pro konfiguraci celého systému a podobně /etc/bashrc
v podskořápkách (pro tento neexistuje žádná záložní). Mnoho systémů včetně Ubuntu také používá /etc/profile.d
adresář obsahující skriptlety shellu, které jsou .
(source
)-ed z /etc/profile
; fragmenty jsou zde pro jednotlivé shelly s *.sh
aplikovat na všechny shelly kompatibilní s Bourne/POSIX a další rozšíření vztahující se na tento konkrétní shell.
Řešení 2:
.profil
.profile
je pro věci, které se konkrétně netýkají Bash
, jako jsou proměnné prostředí PATH
a přáteli a měl by být kdykoli k dispozici.
Například .profile
by měl být také načten při zahájení relace grafické plochy.
.bashrc
.bashrc
slouží ke konfiguraci interaktivního použití Bash, jako je Bash aliases
, nastavení vašeho oblíbeného editor
, nastavením Bash prompt
, atd.
.bash_profile
.bash_profile slouží k zajištění toho, aby obě věci v .profile
a .bashrc
jsou načteny pro login shells
.
Například .bash_profile
může to být něco jednoduchého jako
. ~/.profile
. ~/.bashrc
Pokud byste vynechali .bashrc
, pouze .profile
bude načten.
Řešení 3:
Podle manuálové stránky bash .bash_profile
se provádí pro přihlašovací shelly, zatímco .bashrc
se provádí pro interaktivní nepřihlašovací shelly.
Co je tedy přihlašovací nebo nepřihlašovací shell?
Když se přihlašujete (zadejte uživatelské jméno a heslo) přes konzoli, buď sedíte u počítače, nebo vzdáleně přes ssh:.bash_profile
se provede pro konfiguraci vašeho shellu před úvodním příkazovým řádkem. Pokud jste se však již přihlásili do počítače a otevřeli jste nové okno terminálu (xterm) v Gnome nebo KDE, pak .bashrc
se provádí před příkazovým řádkem okna. .bashrc
se také spustí, když spustíte novou instanci bash zadáním /bin/bash
v terminálu.
Výjimkou z pokynů pro okna terminálu je Terminal.app pro Mac OS X, která ve výchozím nastavení spouští přihlašovací shell pro každé nové okno terminálu a volá .bash_profile
místo .bashrc
. Ostatní emulátory terminálu GUI mohou dělat totéž, ale většina to nedělá.
Více zde.