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.
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.
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.