Tento článek vysvětlí pořadí, ve kterém jsou spouštěny následující soubory:
- /etc/profile
- ~/.bash_profile
- ~/.bashrc
- ~/.bash_login
- ~/.profile
- ~/.bash_logout
Prováděcí sekvence pro interaktivní přihlašovací shell
Následující pseudokód vysvětluje sekvenci provádění těchto souborů.
execute /etc/profile IF ~/.bash_profile exists THEN execute ~/.bash_profile ELSE IF ~/.bash_login exist THEN execute ~/.bash_login ELSE IF ~/.profile exist THEN execute ~/.profile END IF END IF END IF
Když se odhlásíte z interaktivního shellu, následuje sekvence provádění:
IF ~/.bash_logout exists THEN execute ~/.bash_logout END IF
Vezměte prosím na vědomí, že /etc/bashrc je spuštěn ~/.bashrc, jak je ukázáno níže:
# cat ~/.bashrc if [ -f /etc/bashrc ]; then . /etc/bashrc fi
Prováděcí sekvence pro interaktivní nepřihlašovací shell
Při spouštění nepřihlašovacího interaktivního shellu následuje sekvence provádění:
IF ~/.bashrc exists THEN execute ~/.bashrc END IF
Poznámka: Když se spustí neinteraktivní shell, hledá proměnnou prostředí ENV a spustí hodnotu názvu souboru uvedenou v proměnné ENV.
Otestujte pořadí provádění
Jedním ze způsobů, jak otestovat posloupnost provádění, je přidat do těchto souborů různé hodnoty PS1 a znovu se přihlásit do shellu a zjistit, která hodnota PS1 byla vyzvednuta příkazem Linux. Dříve jsme také diskutovali o tom, jak používat PS1, aby byla vaše výzva pro Linux funkční a stylová.
1. /etc/profile se spustí. Přidejte následující řádek PS1 do /etc/profile a znovu se přihlaste, abyste se ujistili, že se výzva Linuxu změní na hodnotu PS1 nastavenou v /etc/profile.
# grep PS1 /etc/profile PS1="/etc/profile> " [Note: re-login to see the prompt change as shown below] Last login: Sat Sep 27 16:43:57 2008 from 192.168.1.2 /etc/profile>
Ujistěte se prosím, že ~/.bash_profile nemá žádné PS1, aby výše uvedené fungovalo správně.
2. ~/.bash_profile se provede: Přidejte následující PS1 do ~/.bash_profile, ~/.bash_login, ~/.profile a ~/.bashrc. Znovu se přihlaste, abyste se ujistili, že se výzva systému Linux změní na hodnotu PS1 nastavenou v ~/.bash_profile, jak je uvedeno níže.
/etc/profile> grep PS1 ~/.bash_profile export PS1="~/.bash_profile> " /etc/profile> grep PS1 ~/.bash_login export PS1="~/.bash_login> " /etc/profile> grep PS1 ~/.profile export PS1="~/.profile> " /etc/profile> grep PS1 ~/.bashrc export PS1="~/.bashrc> " [Note: Upon re-login, it executed /etc/profile first and ~/.bash_profile next. So, it took the PS1 from ~/.bash_profile as shown below. It also did not execute ~/.bash_login, as ~/.bash_profile exists] Last login: Sat Sep 27 16:48:11 2008 from 192.168.1.2 ~/.bash_profile>
3. ~/.bash_login bude spuštěn. Přejmenujte .bash_profile na něco jiného. Znovu se přihlaste, abyste se ujistili, že se výzva systému Linux změní na hodnotu PS1 nastavenou v ~/.bash_login, jak je uvedeno níže.
~/.bash_profile> mv .bash_profile bash_profile_not_used [Note: Upon re-login, it executed /etc/profile first. Since it cannot find ~/.bash_profile, it executed ~/.bash_login] Last login: Sat Sep 27 16:50:55 2008 from 192.168.1.2 ~/bash_login>
4. ~/.profile se spustí. Přejmenujte .bash_login na něco jiného. Znovu se přihlaste, abyste se ujistili, že se výzva systému Linux změní na hodnotu PS1 nastavenou v ~/.profile, jak je uvedeno níže.
~/.bash_login> mv .bash_login bash_login_not_used [Note: Upon re-login, it executed /etc/profile first. Since it cannot find ~/.bash_profile and ~/.bash_login, it executed ~/.profile] Last login: Sat Sep 27 16:56:36 2008 from 192.168.1.2 ~/.profile>
5. ~/.bashrc se spustí pro testování prostředí bez přihlášení . Probíhá “ bash” na příkazovém řádku zobrazí další nepřihlašovací shell, který vyvolá .bashrc, jak je ukázáno níže.
~/.profile> bash [Note: This displays PS1 from .bashrc as shown below.] ~/.bashrc> exit exit [Note: After exiting from non-login shell, we are back to login shell] ~/.profile>
Pokud se vám tento článek líbí, přidejte si jej do záložek na del.icio.us a Zakopnout .