La
shell
(detta in italiano
interprete dei comandi
), in
informatica
, e la componente fondamentale di un
sistema operativo
che permette all'utente il piu alto livello di interazione con lo stesso. Tramite la shell e possibile impartire
comandi
e richiedere l'avvio di altri
programmi
. Insieme al
kernel
, la shell costituisce una delle componenti
software
imprescindibili di un sistema operativo.
Il nome "shell" proviene dall'
inglese
e significa "guscio", a conferma del fatto che questa componente viene considerata l'involucro, la parte visibile del sistema ed e dunque definibile come l'
interfaccia utente
o il programma
software
che la rende possibile. L'interfaccia di una
shell
puo essere
grafica
(GUI), testuale (
TUI
) o
a riga di comando
(CLI).
Nei moderni sistemi e possibile utilizzarne piu di una nello stesso ambiente.
In generale esistono molti tipi di
shell
, che si dividono principalmente in
testuali
e
grafiche
:
- quando si parla semplicemente di
"shell"
, o anche di "terminale", si intende di solito una
shell
testuale con cui l'utente interagisce attraverso un
terminale
o un
terminale virtuale
(quest'ultimo puo anche far parte della
shell
stessa anziche essere un programma a parte) tramite un'
interfaccia a riga di comando
;
- nel caso di
shell
grafiche e comune fare riferimento ai cosiddetti
ambienti desktop
(
desktop environment
), che forniscono agli utilizzatori un ambiente grafico da cui e possibile gestire
file
e avviare programmi.
Una
shell
testuale (o interprete dei comandi) puo definirsi in due varianti.
La prima e costituita da un ambiente simile alle interfacce grafiche, comprensivo quindi di finestre e pulsanti ma dall'assenza di qualsiasi componente grafica. Si utilizza tramite tastiera e, talvolta, mouse.
La seconda e un programma dotato di un'
interfaccia a riga di comando
, che viene eseguito all'interno di un
terminale testuale
. L'utente digita un comando, ovvero richiede l'esecuzione di un programma, e il programma eseguito puo interagire con l'utente e/o mostrare dati sul terminale.
Una delle piu note
shell
testuali e il tradizionale "prompt dei comandi", ben noto a quanti hanno familiarita con i sistemi operativi DOS (
MS-DOS
,
DR-DOS
,
FreeDOS
). Per gli utenti di
MS-DOS
e di alcuni dei sistemi
Microsoft Windows
la
shell
e il programma
command.com
. Anche i sistemi della famiglia
Windows NT
dispongono di una
shell
testuale, il programma
cmd.exe
.
Altro esempio di shell testuale famosa e quella di
OS/400
, conosciuta e usata da tutti coloro che hanno lavorato con i sistemi
IBM
.
Nei sistemi operativi
Unix
e
Unix-like
esistono diverse
shell
testuali; tra le piu note vi sono sicuramente
Bash
(Bourne-Again Shell) e la
Korn shell
, ma ne esistono altre come la
C shell
, con un insieme di funzionalita e caratteristiche di base in comune.
Sono inoltre presenti potenti strumenti per collegare tra loro diversi programmi per svolgere compiti complessi, come le
pipe
e la
redirezione
. I programmi Unix piu propensi ad essere collegati in questo modo sono detti
filtri
.
Le moderne
shell
testuali posseggono diverse funzionalita ergonomiche, tra le quali:
- la cronologia dei comandi eseguiti (o
command history
), che permette di ripetere gli ultimi comandi digitati;
- il completamento dei comandi (o
command-line completion
), che permette di completare automaticamente nomi di programmi e di file
- il
job control
, che permette di
avviare in secondo piano
piu programmi o di sospenderli temporaneamente.
Le
shell
testuali dei sistemi
Unix
integrano un
linguaggio di scripting
con il quale e possibile scrivere veri e propri programmi che possono ad esempio automatizzare le operazioni di amministrazione di sistema, semplificandola. La sintassi di tale linguaggio e un'estensione di quella usata interattivamente, per cui chi e familiare con l'uso interattivo della
shell
trova facile e naturale creare degli script.
Alcune delle funzionalita delle
shell
dei sistemi Unix sono state riprese in varia misura anche dalle
shell
testuali per i sistemi
Microsoft Windows
, tuttavia esistono prodotti che offrono un ambiente Unix-like (e le relative
shell
) per tali sistemi, come ad esempio quello del progetto
Cygwin
, o anche Microsoft Windows Services for UNIX
[1]
o ancora lo MKS Toolkit.
[2]
Il comando per cambiare la shell di login di un utente e
chsh
.
L'evoluzione grafica delle shell e rappresentata dalle cosiddette
interfacce grafiche
o GUI (
Graphic User Interface
), che hanno una rappresentazione dei dati pensata per essere molto piu vicina al modo di percepire il mondo da parte degli esseri umani e quindi piu
facile da usare
.
Con le GUI il computer e il suo contenuto non sono piu rappresentati da linee di testo, ma da icone e finestre che permettono di fare operazioni complesse con un clic del
mouse
. In molti sistemi le operazioni attivate dai click su icone e pulsanti mappano le rispettive istruzioni delle interfacce testuali che rappresentano dunque l'interfaccia diretta con il kernel del sistema operativo o il
core
delle applicazioni.
Il limite delle GUI e il loro alto consumo delle risorse di calcolo del computer: sono piu pesanti e in rete geografica possono essere gestite da remoto solo a discapito di prestazioni ed eleganza. Molti utenti esperti, inoltre, le ritengono meno efficienti (ad esempio perche per svolgere compiti ripetitivi possono essere di grande aiuto le capacita di
scripting
che molte shell testuali incorporano) e meno flessibili.
Le shell grafiche sono state sicuramente un passo avanti per l'interazione uomo-macchina, ma quelle a riga di comando non possono essere sostituite per la loro potenza e velocita d'uso.
Le shell grafiche piu conosciute sono sicuramente
GNOME
e
KDE
(nei sistemi Unix e Unix-like),
Finder
(in
macOS
) e
File Explorer
(nei sistemi Microsoft Windows)
Nei sistemi operativi
Microsoft Windows
, il
comando
shell:history
accede una
cartella speciale di Windows
che contiene i file locali modificati dall'utente, e per la quale e possibile impostare la creazione periodica di un
punto di ripristino
. Naturalmente, non e possibile consultare il contenuto della cartella "History" appartenente ad account differenti da quello corrente, anche se l'utente accede come amministratore del computer
[3]
, o si dispone di
privilegi equivalenti
[4]
.