GNU/Linux >> Znalost Linux >  >> Linux

Spouštěcí sekvence pro .bash_profile, .bashrc, .bash_login, .profile a .bash_logout

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 .


Linux
  1. Příklady Bash for Loop a While Loop

  2. Pokyny pro spouštění skriptů Shell pro nováčky

  3. Kód pro malloc a zdarma

  1. Cheat sheet pro uživatele Linuxu a oprávnění

  2. Kde je .bashrc pro root?

  3. Jaké jsou funkční rozdíly mezi .profile .bash_profile a .bashrc

  1. Jak používám Ansible a anacron pro automatizaci

  2. 10 návodů na příkazy Linuxu pro začátečníky a experty

  3. Bash pro průvodce smyčkou a příklady