GNU/Linux >> Linux Esercitazione >  >> Linux

Perché i nuovi terminali in Awesome si generano con Shlvl>1?

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.


Linux
  1. Perché mi attengo a xterm

  2. Perché mi sono innamorato di Antergos Linux

  3. Enumerazione di una nuova rete con Nmap

  4. Perché Xargs non può funzionare con Tail -f?

  5. Perché posso accedere con password parziali??

Dai nuova vita a un vecchio MacBook con Linux

Come aggiungere un nuovo utente MySQL con autorizzazioni GRANT

Come creare un nuovo utente con accesso Ssh?

Aggiunta di nuovi utenti in Linux con il comando Useradd

Crea nuovi gruppi in Linux con il comando Groupadd

Perché uscire dal codice 141 con grep -q?