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.