Questa breve guida spiega come verificare se sei in Schermo sessione o meno in Linux. Come avrai notato, quando avvii un Tmux sessione, vedrai ovviamente i dettagli della sessione, come il nome SHELL corrente, il nome host e la data e l'ora correnti, nella barra di stato in basso come mostrato nell'immagine sottostante.

Dettagli della sessione Tmux
Ma non vedrai tali dettagli quando sei all'interno delle sessioni di Screen. Ecco come appare la sessione dello schermo sul mio sistema Ubuntu:

Sessione schermo
Riesci a individuare la differenza? La sessione dello schermo e la sessione normale avranno esattamente lo stesso aspetto. Eseguiamo il comando "screen -ls" per elencare le sessioni dello schermo in esecuzione.
$ screen -ls
Risultato di esempio:

Elenca le sessioni dello schermo
Vedere? Sono all'interno della sessione Screen, ma sembra una sessione normale. Non vi è alcuna indicazione nella barra di stato in basso. Come fai a sapere se stai lavorando all'interno di una sessione Screen o meno? Questo è quello che scopriremo ora.
Verifica se sei in Screen Session o meno in Linux
Ci sono un paio di modi per verificare se siamo nella sessione dello schermo. Qui ho indicato tre metodi.
Metodo 1 - Utilizzo del comando "eco"
Per verificare se sei in sessione Screen o meno, esegui semplicemente il seguente comando:
$ echo $STY
Se sei all'interno della sessione Screen, vedrai un output come di seguito.
18704.pts-0.ostechnix
Ecco un altro modo per verificare se sei nella sessione Screen:
$ echo $TERM
Vedrai il termine "schermo" nell'output.
Risultato di esempio:
screen.xterm-256color

Controlla se sei nella sessione dello schermo in Linux
Se non c'erano sessioni dello schermo in esecuzione, non vedrai nulla per il primo comando. E per il secondo comando, non ci sarà il termine "schermo" nell'output. Basta uscire o staccare dalla sessione dello schermo ed eseguire nuovamente i comandi precedenti. Vedrai un output come di seguito.

Controlla le sessioni dello schermo
Vedere? Non siamo all'interno della sessione Screen.
I due comandi precedenti funzioneranno solo se sei nella sessione dello schermo in esecuzione sul tuo sistema locale. Non funzionerà se hai avviato la sessione Screen nel sistema locale e quindi accedi a qualche altro sistema sulla rete tramite SSH.
In tal caso, puoi utilizzare il secondo metodo indicato di seguito.
Metodo 2:utilizzo del tasto prefisso schermo
Per verificare se siamo in sessione Screen o meno, premi semplicemente Ctrl+a e poi Ctrl+t chiavi. Questo mostrerà l'ora e il nome host se sei nella sessione Screen.
Dai un'occhiata alla seguente demo.

Controlla se sei in una sessione Screen usando la chiave del prefisso Screen
Come nell'output sopra,
- In primo luogo, ho avviato una sessione Screen e ho premuto i tasti Ctrl+a e Ctrl+t per verificare se sono nella sessione Screen.
- Poi mi sono disconnesso dalla sessione Screen premendo Ctrl+a e d .
- E alla fine mi sono ricollegato alla sessione Screen e ho premuto Ctrl+a e Ctrl+t per verificare di nuovo se sono nella sessione Screen.
Questo metodo funzionerà se lo sei anche se hai SSH da qualche altra parte.
Metodo 3:utilizzo del comando Didascalia
Se non ti piace premere i tasti ogni volta, puoi aggiungere il seguente codice nel tuo ~/.screenrc file. Se questo file non è disponibile, crealo.
$ nano ~/.screenrc
Aggiungi il codice:
caption always "%{= kc}Screen session on %H (system load: %l)%-28=%{= .m}%D %d.%m.%Y %0c"
Salva e chiudi il file.
D'ora in poi, ogni volta che avvierai una sessione Screen, vedrai una piccola barra di notifica (con inclusi nome host, ora e data, caricamento del sistema ecc.) nella parte inferiore della finestra del Terminale come mostrato di seguito.
Screen session on ubuntuserver (system load: 0.00 0.00 0.00) Sat 22.02.2020 12:37

Visualizza i dettagli della sessione dello schermo nella parte inferiore della finestra del terminale utilizzando il comando Didascalia
Questa barra di notifica scomparirà dopo l'uscita dalla sessione Screen.
Metodo 4:imposta un prompt Bash diverso per le sessioni Screen
Questo è un altro modo per rendere facilmente riconoscibili le sessioni Screen aggiungendo alcune righe di codice in ~/.bashrc file. In realtà questo non è un metodo consigliato . Potrebbe causare molti problemi inutili se un'altra shell come zsh eredita la tua shell corrente. Questo è solo a scopo educativo. Usalo a tuo rischio!
Innanzitutto, esegui il backup del tuo attuale ~/.bashrc file:
$ cp ~/.bashrc ~/.bashrc.bak
Basta impostare un nome del prompt Bash diverso per le sessioni normali e dello schermo come desideri di seguito. Ad esempio, ho aggiunto le seguenti righe nel mio ~/.bashrc file.
if [ -z $STY ] then PS1="This is normal session:~$ " else PS1="This is Screen session:~$ " fi
Esci e accedi nuovamente. Il nome del prompt del tuo terminale cambierà in base alle tue impostazioni mentre passi dalla sessione normale a quella dello schermo.

Imposta un prompt Bash diverso per le sessioni dello schermo
Ancora una volta, non è una buona pratica cambiare il nome del prompt di Bash. Invece, usa semplicemente uno dei metodi precedenti per verificare se sei nella sessione Screen o meno.
Lettura correlata:
- Come personalizzare il prompt di Bash in Linux
Spero che questo aiuti.