GNU/Linux >> Znalost Linux >  >> Linux

Proč $shlvl začíná na úrovni 2 v prostředí bez přihlášení, ale na úrovni 1 v přihlašovacím prostředí v prostředí Rhel 7?

Používám “Red Hat Enterprise Linux Server release 7.1 (Maipo)”.
Když jsem v nepřihlašovacím shellu, minimální úroveň shellu (echo $SHLVL) začíná na minimální úrovni 2 a zvyšuje se s následnými dílčími -shells.
Ale když používám login-shell, minimální úroveň shellu (echo $SHLVL) začíná na minimální úrovni shellu 2 a zvyšuje se s po sobě jdoucími sub-shelly.

[Que.] Proč je rozdíl v minimální úrovni prostředí mezi přihlašovacím prostředím (začíná na minimální úrovni prostředí 1) a nepřihlašovacím prostředím (začíná na minimální úrovni prostředí 2)?

Používám bash.

Přijatá odpověď:

Z manuálové stránky bash:

SHLVL se zvýší o jednu při každém spuštění instance bash.

Jak vidíte, tato proměnná nesouvisí se skutečností, zda se jedná o přihlašovací shell nebo ne. Znamená to pouze, že váš bash shell byl spuštěn jiným bash shellem. Protože nevíme, co přesně děláte, abyste získali svůj shell, nemohu říci, proč máte vnořené vyvolání shellu, ale zde je několik běžných případů:

  • Spouštíte nové okno terminálu z příkazového řádku

  • Ke spuštění nového okna terminálu používáte nějakou funkci operačního systému a tato funkce je implementována tak, že nejprve spustíte bash, který poté spustí terminál, který zase spustí nový shell

  • Máte rekurzivní bash zavolejte svůj .bash_profile, který se spustí vždy, když se SHLVL rovná 1 (to zní divně, ale už jsem to viděl dvakrát!)


Linux
  1. Proč Bashrc kontroluje, zda je aktuální shell interaktivní?

  2. Proč jsou ve výchozím nastavení interaktivní shelly na přihlašovacích shellech Osx?

  3. Proč nikdo nepoužívá The True Bourne Shell jako /bin/sh?

  1. Proč „zip“ v A For Loop funguje, když soubor existuje, ale ne, když neexistuje?

  2. Proč to „při čtení“ funguje v terminálu, ale ne ve skriptu Shell?

  3. Proč Regex v Bash funguje pouze v případě, že je proměnnou a ne přímo?

  1. Jaké jsou různé typy shellů v Linuxu?

  2. Co dělá Rackspace v cloudu?

  3. CentOS / RHEL :Jak změnit přihlašovací shell uživatele