Ich habe eine PS1
die die SHLVL anzeigt, wenn sie nicht 1 ist, um schnell zu sehen, ob ich mich in einer Unterschale befinde. Dies funktioniert wie erwartet bei Verwendung von GNOME, aber wenn ich ein neues Terminal in Awesome WM (Mod4 +Zurück ) beginnt es immer mit SHLVL=2
oder höher. Ist das normal?
Dies hängt direkt damit zusammen, wie oft ich Awesome neu gestartet habe (Mod4 +Strg +r oder pkill -HUP awesome
). Gibt es eine Möglichkeit, das Spawnen neuer Shells beim Neustart zu vermeiden?
Diese Commits scheinen relevant zu sein, da Awesome so etwas wie $SHELL -c ...
ausführt auf HUP
, aber ich weiß nicht genug C, um es zu beheben.
Mein /bin/sh
ist dash
und meine Login-Shell ist bash
.
Problem gemeldet.
Akzeptierte Antwort:
Ich glaube, ich verstehe das Warum, aber ich habe keine vollständige Lösung.
Das Verhalten von SHLVL
hängt von der Schale ab. In dash und ksh (sowohl pdksh als auch ksh93) erhöhen nur interaktive Instanzen SHLVL
. In bash und zsh erhöhen alle Instanzen SHLVL
, sogar bash -c …
.
Wenn Sie nach diesem Patch eine Verhaltensänderung beobachten, ist es wahrscheinlich, dass Ihr /bin/sh
ist Bindestrich und Ihr $SHELL
ist bash. Vorher führte awesome /bin/sh -c …
aus was SHLVL
nicht geändert hat . Nach dem Patch wird nun $SHELL -c …
ausgeführt , also bash -c …
, wodurch SHLVL
erhöht wird .
Sie könnten schummeln, indem Sie SHLVL
ändern innen genial. Hängen Sie sich in den Startcode ein, um SHLVL
zu verringern von 1. Ich bin mir ziemlich sicher, dass dies möglich ist, ohne den C-Code neu zu kompilieren, obwohl ich den Lua-Code nicht kenne.