Shell (informatica): differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Etichette: Rimozione di avvisi di servizio Modifica visuale
m Annullata la modifica 72350193 di 84.240.169.30 (discussione)
Riga 1:
{{F|sistemi operativi|marzo 2013}}
ANDRE WAS HERE[[Categoria:Interfaccia utente]]
La '''shell''', in [[informatica]], è la parte di un [[sistema operativo]] che permette agli utenti di interagire con il sistema stesso, impartendo [[istruzione (informatica)|comandi]] e richiedendo l'avvio di altri [[Programma (informatica)|programmi]]. Insieme al [[kernel]] costituisce una delle componenti principali di un sistema operativo. Il suo nome (dall'[[lingua inglese|inglese]] ''shell'', guscio) deriva dal fatto che questa componente viene considerata l'involucro, la parte visibile del sistema ed è dunque definibile come l'[[interfaccia utente]] o il programma [[software]] che la rende possibile.
 
== Descrizione ==
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 (informatica)|terminale]] o un [[emulatore di terminale]] (quest'ultimo può anche far parte della ''shell'' stessa anziché essere un programma a parte) tramite un'[[interfaccia a riga di comando]];
* nel caso di ''shell'' grafiche è comune fare riferimento ai cosiddetti ''[[desktop environment]]'', che forniscono agli utilizzatori un ambiente grafico da cui è possibile gestire [[file]] e avviare programmi.
 
=== Shell testuali ===
Una ''shell'' testuale (o interprete dei comandi) è un programma dotato di un'[[interfaccia a riga di comando]], che viene eseguito all'interno di un [[terminale (informatica)|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 mostrare 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]], [[DR-DOS]], [[FreeDOS]]). Per gli utenti di [[MS-DOS]] e di alcuni dei sistemi [[Microsoft Windows]] la ''shell'' è il programma [[command.com]].
Anche i sistemi della famiglia [[Windows NT]] dispongono di una ''shell'' testuale, il programma [[cmd.exe]].
 
Nei sistemi operativi [[Unix]] e [[Unix-like]] esistono diverse ''shell'' testuali; tra le più note vi sono sicuramente [[Bash]] (Bourne-Again Shell) e la [[Korn shell]], ma ne esistono altre come la [[C shell]], con un insieme di funzionalità e caratteristiche di base in comune.
 
Sono inoltre presenti potenti strumenti per collegare tra loro diversi programmi per svolgere compiti complessi, come le ''[[pipe#Funzione pipe nella Shell|pipe]]'' e la [[redirezione]]. I programmi Unix più propensi ad essere collegati in questo modo sono detti [[Filtro (Unix)|filtri]].
 
Le moderne ''shell'' testuali posseggono diverse funzionalità 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 [[esecuzione in background|avviare in ''background'']] più programmi o di sospenderli temporaneamente.
 
Le ''shell'' testuali dei sistemi [[Unix]] integrano un [[linguaggio di scripting]] con il quale è possibile scrivere veri e propri programmi che possono ad esempio automatizzare le operazioni di amministrazione di sistema, semplificandola. La sintassi di tale linguaggio è un'estensione di quella usata interattivamente, per cui chi è familiare con l'uso interattivo della ''shell'' trova facile e naturale creare degli script.
 
Alcune delle funzionalità 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<ref>{{en}}[http://technet.microsoft.com/it-it/library/bb463212%28en-us%29.aspx Introduction to Microsoft Windows Services for UNIX 3.5]</ref> o ancora lo MKS Toolkit.<ref>{{en}} [http://www.mkssoftware.com/ MKS Toolkit]</ref>
 
Il comando per cambiare la shell di login di un utente è ''[[chsh]]''.
 
=== Shell grafiche ===
L'evoluzione grafica delle shell è rappresentata dalle cosiddette [[Interfaccia grafica|GUI]] (''Graphic User Interface'', interfacce grafiche utente), che hanno una rappresentazione dei dati pensata per essere molto più vicina al modo di percepire il mondo da parte degli esseri umani e quindi più [[user-friendly]].
 
Con le GUI il computer e il suo contenuto non sono più 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 è il loro alto consumo delle risorse di calcolo del computer: sono più 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 perché per svolgere compiti ripetitivi possono essere di grandi aiuto le capacità 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 velocità d'uso.
 
Le shell grafiche più conosciute sono sicuramente [[GNOME]] e [[KDE]] (nei sistemi Unix e Unix-like), [[Finder]] (in [[Mac OS]]) e [[Windows Explorer]] (nei sistemi Microsoft Windows)
 
== Shell più diffuse ==
=== Shell testuali ===
* [[Bash]] (shell tipica dei sistemi [[GNU/Linux]])
* [[Bourne shell]] (shell dei primi sistemi [[Unix]])
* [[C shell]] (shell un tempo popolare su sistemi [[Unix]])
* [[Korn shell]] (shell comunemente disponibile su sistemi [[Unix]])
* [[Debian Almquist shell]] (shell usata in [[Debian]] e derivati per eseguire gli script di sistema)
* [[cmd.exe]] (shell del sistemi operativi della famiglia [[Windows NT]])
* [[command.com]] (shell del sistema operativo [[MS-DOS]] e di alcuni sistemi [[Microsoft Windows]])
 
=== Shell grafiche ===
* [[GNOME]] (tipica dei sistemi [[GNU/Linux]] e [[Solaris (sistema operativo)|Solaris 10]])
* [[KDE]] (tipica dei sistemi [[GNU/Linux]])
* [[Xfce]] (tipica dei sistemi [[GNU/Linux]])
* [[Common Desktop Environment]] (normalmente disponibile su sistemi [[Unix]])
* [[Finder]] (la shell dei sistemi [[Mac OS]])
* [[Windows Explorer]] (la shell dei sistemi [[Microsoft Windows]])
* [[GreenGnome]] (shell replacement per sistemi [[Microsoft Windows]])
* [[Unity (software)|Unity]] (shell ufficiale di [[Ubuntu]])
 
== Note ==
<references/>
 
== Voci correlate ==
* [[Interfaccia a linea di comando]]
* [[Interfaccia utente]]
* [[One-liner]]
* [[Script]]
* [[Sistema operativo]]
 
== Collegamenti esterni ==
* {{en}} [[w:en:Wikipedia:Comparison of command shells|Confronto fra shell di comando]]
 
{{Portale|Informatica}}
 
ANDRE WAS HERE[[Categoria:Interfaccia utente]]
[[Categoria:Sistemi operativi]]
[[Categoria:Unix]]