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.