In un sistema operativo, la shell è il programma che
permette agli utenti di comunicare con il sistema e di avviare i
programmi. È una delle componenti principali di un sistema operativo,
insieme al kernel.
La shell è l'ambiente di lavoro attraverso il quale è possibile
impartire al computer comandi, richiedendo l'esecuzione di programmi.
Esistono molti tipi di shell, che si dividono principalmente in testuali
e grafiche. Quando si parla semplicemente di "shell", si intende di
solito una shell testuale.Una shell testuale è un programma con
interfaccia a linea 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 può interagire con
l'utente e/o stampare dati sul terminale.
Una delle più note shell testuali è il tradizionale 'prompt dei comandi',
ben noto a quanti hanno familiarità con i sistemi operativi DOS (MS-DOS,
DrDos, FreeDOS). Per gli utenti del vecchio MS-DOS la shell era il
programma 'command.com'. Anche le recenti versioni di Windows hanno una
shell, il programma 'cmd.exe'.
In ambiente Unix, esistono diverse shell, una tra le più famose è
sicuramente la 'Bash' (Bourne-Again Shell), ma ne esistono altre come la
'Korn Shell' e la 'C Shell', con un insieme di funzionalità e
caratteristiche di base in comune.
La shell testuale è un ambiente di lavoro che funziona 'a riga di
comando', con istruzioni testuali che vengono impartite attraverso la
tastiera per avviare programmi, eseguire comandi, visualizzare il file
system, interagire in ogni modo con il computer. Un programma viene
invocato digitando il suo nome, eventualmente seguito da altri dati, che
vengono passati come argomenti al programma. Completata una riga di
comando, si preme invio per richiederne l'esecuzione.
Sono inoltre presenti potenti strumenti per collegare tra loro diversi
programmi per svolgere compiti complessi, come le pipe e la redirezione.
I programmi unix più propensi ad essere collegati in questo modo sono
detti filtri.
Le moderne shell per Unix posseggono funzionalità ergonomiche molto
ricche, come la "command history", ovvero la possibilità di ripetere gli
ultimi comandi digitati, la "completion", ovvero la possibilità di
completare automaticamente nomi di programmi e di file, il "job
control", che permette di gestire diversi programmi contemporaneamente.
Queste funzionalità, una volta apprese, contribuiscono in modo
determinante a rendere le shell uno strumento di lavoro altamente
produttivo.
Le shell testuali per Unix sono molto apprezzate dagli sviluppatori
perché hanno integrato anche un linguaggio di scripting molto potente
con il quale è possibile scrivere veri e propri programmi (script) o
delle procedure che agevolano moltissimo l'amministrazione di sistema.
Alcune delle funzionalità nate nelle shell unix sono state imitate in
qualche misura anche dalle shell testuali per windows, ma è anche
possibile avere una vera shell come la bash su windows, grazie al
progetto Cygwin.
Tuttavia per quanto riguarda normali chatters di IRCnet che si
vogliono spingere oltre alla normale connessione client del proprio PC,
esiste la possibilità di "affittare" temporaneamente shell di svariati
provider chiamati appunto "Shell Provider", utilizzandole per compilare
e lanciare in background processi di programmi quali psyBNC, Eggdrop,
psotnic, irssi, etc.
|