Ho una PS1
che mostra SHLVL se non è 1 per vedere rapidamente se sono in una subshell. Funziona come previsto quando si utilizza GNOME, ma quando viene generato un nuovo terminale in Awesome WM (Mod4 +Ritorno ) inizia sempre con SHLVL=2
o più alto. È normale?
Questo è direttamente correlato al numero di volte in cui ho riavviato Awesome (Mod4 +Ctrl +r o pkill -HUP awesome
). C'è un modo per evitare di generare nuove shell al riavvio?
Questi commit sembrano essere rilevanti, dal momento che Awesome finisce per eseguire qualcosa come $SHELL -c ...
su HUP
, ma non conosco abbastanza C per risolverlo.
Il mio /bin/sh
è dash
e la mia shell di accesso è bash
.
Segnalato il problema.
Risposta accettata:
Penso di aver capito il perché, ma non ho una soluzione completa.
Il comportamento di SHLVL
dipende dalla conchiglia. In dash e ksh (sia pdksh che ksh93), solo le istanze interattive incrementano SHLVL
. In bash e zsh, tutte le istanze incrementano SHLVL
, anche bash -c …
.
Se hai notato un cambiamento nel comportamento dopo questa patch, è probabile che il tuo /bin/sh
è trattino e il tuo $SHELL
è schifoso. Prima , fantastico eseguiva /bin/sh -c …
che non ha cambiato SHLVL
. Dopo la patch, ora sta eseguendo $SHELL -c …
, ovvero bash -c …
, che incrementa SHLVL
.
Puoi imbrogliare cambiando SHLVL
dentro Fantastico. Collegati al codice di avvio per diminuire SHLVL
di 1. Sono abbastanza sicuro che ciò sia possibile senza ricompilare il codice C, anche se non conosco il codice Lua.