J'ai une PS1
qui montre le SHLVL si ce n'est pas 1 pour voir rapidement si je suis dans un sous-shell. Cela fonctionne comme prévu lors de l'utilisation de GNOME, mais lorsque je crée un nouveau terminal dans Awesome WM (Mod4 +Retour ) il commence toujours par SHLVL=2
ou plus. Est-ce normal ?
Ceci est directement lié au nombre de fois que j'ai redémarré Awesome (Mod4 +Ctrl +r ou pkill -HUP awesome
). Existe-t-il un moyen d'éviter de générer de nouveaux shells lors du redémarrage ?
Ces commits semblent être pertinents, car Awesome finit par exécuter quelque chose comme $SHELL -c ...
sur HUP
, mais je ne connais pas assez C pour le réparer.
Mon /bin/sh
est dash
et mon shell de connexion est bash
.
A signalé le problème.
Réponse acceptée :
Je pense que je comprends pourquoi, mais je n'ai pas de solution complète.
Le comportement de SHLVL
dépend de la coque. Dans dash et ksh (pdksh et ksh93), seules les instances interactives incrémentent SHLVL
. Dans bash et zsh, toutes les instances incrémentent SHLVL
, même bash -c …
.
Si vous avez observé un changement de comportement après ce patch, il est probable que votre /bin/sh
est tiret et votre $SHELL
est bas. Avant, awesome exécutait /bin/sh -c …
qui n'a pas changé SHLVL
. Après le patch, il exécute maintenant $SHELL -c …
, c'est-à-dire bash -c …
, qui incrémente SHLVL
.
Vous pourriez tricher en changeant SHLVL
à l'intérieur Génial. Accrochez-vous au code de démarrage pour diminuer SHLVL
par 1. Je suis presque sûr que c'est possible sans recompiler le code C, bien que je ne connaisse pas le code Lua.