GNU/Linux >> Linux Esercitazione >  >> Linux

Come faccio a sapere se sto eseguendo una shell nidificata?

Il $SHLVL variabile tiene traccia del livello di nidificazione della shell:

$ echo $SHLVL
1
$ bash
$ echo $SHLVL
2
$ exit
$ echo $SHLVL
1

In alternativa alla generazione di sub-shell, potresti spingere e estrarre le directory dallo stack e rimanere nella stessa shell:

[[email protected] /old/dir]# pushd /new/dir
/new/dir /old/dir
[[email protected] /new/dir]# popd
/old/dir
[[email protected] /old/dir]#

Ecco una versione semplificata di parte del mio prompt:

PS1='$(((SHLVL>1))&&echo $SHLVL)\$ '

Se non sono in una shell nidificata, non aggiunge nulla in più, ma mostra la profondità se mi trovo in qualsiasi livello di nidificazione.


Guarda $0 :se inizia con meno - , sei nella shell di login.


Linux
  1. Come rendere le variabili d'ambiente "esportate" in uno script di shell?

  2. Su quale shell sto correndo?

  3. Come sapere se Dd funziona ancora?

  4. Come fa Bash a sapere come viene invocato?

  5. Esecuzione di script di shell in parallelo

Come abilitare la virtualizzazione annidata in VirtualBox

Come modificare una shell utente in Linux

Come utilizzare if-else negli script della shell?

Come eseguire un comando in uno script della shell?

Come posso conoscere il percorso assoluto di un processo in esecuzione?

Come faccio a sapere se sto utilizzando Linux a 32 o 64 bit?