Mám PS1 který ukazuje SHLVL, pokud to není 1, abyste rychle zjistili, zda jsem v podskořápce. Při používání GNOME to funguje podle očekávání, ale když vytvořím nový terminál v Awesome WM (Mod4 +Návrat ) vždy začíná SHLVL=2 nebo vyšší. Je to normální?
To přímo souvisí s tím, kolikrát jsem restartoval Awesome (Mod4 +Ctrl +r nebo pkill -HUP awesome ). Existuje nějaký způsob, jak zabránit vytváření nových shellů při restartování?
Tyto commity se zdají být relevantní, protože Awesome nakonec spustí něco jako $SHELL -c ... na HUP , ale neznám dost C, abych to opravil.
Můj /bin/sh je dash a můj přihlašovací shell je bash .
Nahlásili problém.
Přijatá odpověď:
Myslím, že chápu proč, ale nemám úplnou opravu.
Chování SHLVL záleží na skořápce. V pomlčkách a ksh (pdksh i ksh93) se SHLVL zvyšují pouze interaktivní instance . V bash a zsh se všechny instance zvyšují o SHLVL , dokonce i bash -c … .
Pokud jste po této opravě zaznamenali změnu v chování, je pravděpodobné, že váš /bin/sh je pomlčka a váš $SHELL je bash. Dříve úžasné spouštělo /bin/sh -c … který nezměnil SHLVL . Po opravě se nyní spouští $SHELL -c … , tj. bash -c … , což zvyšuje SHLVL .
Můžete podvádět změnou SHLVL uvnitř Úžasné. Zahákněte do spouštěcího kódu, abyste snížili SHLVL o 1. Jsem si docela jistý, že je to možné bez rekompilace kódu C, i když kód Lua neznám.