Sto usando "Red Hat Enterprise Linux Server versione 7.1 (Maipo)".
Quando sono in una shell senza login, il livello minimo della shell (echo $SHLVL) inizia al livello minimo 2 e aumenta con il sub successivo -shells.
Ma quando utilizzo una shell di accesso, il livello minimo della shell (echo $SHLVL) inizia al livello minimo della shell 2 e aumenta con le subshell successive.
[Que.] Perché c'è una differenza nel livello minimo della shell tra la shell di accesso (inizia dal livello minimo della shell 1) e la shell non di accesso (inizia dal livello minimo della shell 2)?
Sto usando bash.
Risposta accettata:
Dalla pagina man di bash:
SHLVL Incrementato di uno ogni volta che viene avviata un'istanza di bash.
Come vedi, questa variabile non è correlata al fatto che si tratti di una shell di accesso o meno. Significa solo che la tua shell bash è stata avviata da un'altra shell bash. Dal momento che non sappiamo esattamente cosa stai facendo per ottenere la tua shell, non posso dire perché hai una chiamata di shell nidificata, ma qui ci sono alcuni casi comuni:
-
Stai avviando una nuova finestra di terminale dalla riga di comando
-
Stai utilizzando alcune funzionalità del sistema operativo per avviare una nuova finestra di terminale e questa funzionalità viene implementata avviando prima un bash che quindi esegue il terminale che a sua volta esegue una nuova shell
-
Hai un
bash
ricorsivo chiama nel tuo .bash_profile che viene eseguito ogni volta che SHLVL è uguale a 1 (sembra strano, ma l'ho visto già due volte!)