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!)