La shell di Linux

La shell di Linux è un software che gestisce la comunicazione tra l'utente e il sistema operativo. Permette l'esecuzione dei comandi operativi.

Cosa significa shell? In inglese "shell" significa guscio. Come il guscio di una conchiglia, la shell è l'interfaccia tra il cuore del sistema operativo e gli utenti. L'interfaccia può essere testuale ( CLI ossia Command Line Interface ) o grafica ( GUI ossia Graphic User Interface ). Tutti i sistemi operativi hanno una shell.

Nel sistema operativo Linux l'uso della shel può essere interattivo e non.

  • Le shell interattive ( shell di login ) attendono la digitazione del comando da parte dell'utente sulla linea comandi e lo eseguono. Sono comandi o procedure eseguibili soltanto dentro una sessione.
  • Le shell non interattive ( shell non di login ) eseguono i comandi, programmi, procedure in tutto il sistema operativo. I comandi sono eseguiti indipendentemente dalle sessioni.

A cosa serve la shell

La shell può essere utilizzata dall'utente per i seguenti motivi:

  • Eseguire comandi diretti. L'utente accede alla linea di comando per digitare un comando. La shell interpreta il singolo comando e lo esegue.
  • Personalizzare la sessione. Nei sistemi Unix like molte variabili di ambiente della sessione possono essere personalizzate dall'amministratore di sistema e dall'utente stesso. L'uso della shell permette di modificare il valore di default delle variabili nella fase di login dell'utente tramite la lettura di un file di start-up.

    Esempio. L'inserimento di comandi nel file di start-up, ne consente l'esecuzione automatica quando l'utente accede al sistema ( es. alias, comandi personalizzati, variabili ambientali, ecc. ).

  • Programmare. La shell permette all'utente di scrivere dei comandi in sequenza dentro un file batch eseguibile, detto script di shell. Quando viene lanciato, il sistema esegue tutti i comandi eseguiti al suo interno, dal primo all'ultimo. L'attività di scripting è un'altra funzione svolta dalla shell.

Tipi di shell su Linux

Nel sistema Linux esistono diverse tipologie di shell. Quelle più comuni sono le seguenti:

  • BASH ( Bourne Again SHell ). E' la più diffusa nelle distribuzioni e uno sandard di Linux.
  • CSH ( C Shell )
  • TCSH ( C Shell estesa )
  • KSH ( Shell Korn )

La differenza tra sessioni interattive e non interattive

La sessione interattiva è legata alla sessione dell'utente.

Esempio. I comandi personalizzati e gli aliases di una sessione funzionano soltanto dopo il login dell'utente che li ha creati. Se accede un altro utente, non funzionano.

La sessione non interattiva è, invece, generale. I programmi e i comandi sono eseguibili dal sistema operativo.

la differenza tra sessioni interattive e non interattive su Linux

Come unificare le sessioni interattive e non

Per eseguire i comandi in qualsiasi sessione e login, occorre inserirli nel file .bashrc.

Poi si collega il proprio .bash_profile dell'utente al file .bashrc.

E' sufficiente inserire nel .bash_profile il seguente comando

if [ -f ~/.bashrc ]; then
~/.bashrc
fi

Il comando legge ed esegue automaticamente il contenuto del file .bashrc al momento del login utente sul sistema.

Un'eventuale variazione del .bashrc è immediatamente ereditata dal profilo utente.

la differenza tra sessioni interattive e non su Linux

Ora i due ambienti operativi coincidono.

Grazie a questa configurazione la sessione interattiva dell'utente funziona come una sessione non interattiva.

Esempio. Quando creo un alias lo inserisco nel file .bashrc anziché nel .bash_profile. Poi richiamo automaticamente il .bashrc dal .bash_profile tramite il comando source. In questo modo è eseguibile da qualsiasi sessione anche non interrativa.

 


 

Segnalami un errore, un refuso o un suggerimento per migliorare gli appunti

FacebookTwitterLinkedinLinkedin
knowledge base

Libri di approfondimento

Linux

FAQ