Shell (informatica): differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
m Shell grafiche: Sistemato link GUI
Funzionalità collegamenti suggeriti: 3 collegamenti inseriti.
 
(168 versioni intermedie di oltre 100 utenti non mostrate)
Riga 1:
{{F|sistemi operativi|marzo 2013}}
{{Nota disambigua|descrizione=compagnia petrolifera Shell|titolo=[[Shell (compagnia petrolifera)]]}}
[[File:Gnome-3.18.2-showing-overview.png|thumb|upright=1.4|L'interfaccia grafica di [[GNOME]] dei sistemi [[GNU/Linux]] e [[Solaris (sistema operativo)|Solaris]]]]
La '''shell''' (detta in italiano '''interprete dei comandi'''), in [[informatica]], è la componente fondamentale di un [[sistema operativo]] che permette all'utente il più alto livello di interazione con lo stesso. Tramite la shell è possibile impartire [[istruzione (informatica)|comandi]] e richiedere l'avvio di altri [[Programma (informatica)|programmi]]. Insieme al [[kernel]], la shell costituisce una delle componenti [[software]] imprescindibili di un sistema operativo.
 
Il nome "shell" proviene dall'[[lingua inglese|inglese]] e significa "guscio", a conferma del 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. L'interfaccia di una ''shell'' può essere [[Interfaccia grafica|grafica]] (GUI), testuale ([[Text-based user interface|TUI]]) o [[Interfaccia a riga di comando|a riga di comando]] (CLI).
In un [[sistema operativo]], la '''shell''' è il programma che permette agli utenti di comunicare con il sistema e di avviare i [[programma|programmi]]. È una delle componenti principali di un sistema operativo, insieme al [[kernel]].
Nei moderni sistemi è possibile utilizzarne più di una nello stesso ambiente.
 
== Descrizione ==
La shell è l'"ambiente di lavoro" attraverso il quale è possibile impartire al computer comandi, richiedendo l'esecuzione di programmi.
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 [[terminale virtuale]] (quest'ultimo può anche far parte della ''shell'' stessa anziché essere un programma a parte) tramite un'[[interfaccia a riga di comando]];
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.
* nel caso di ''shell'' grafiche è comune fare riferimento ai cosiddetti [[Ambiente desktop|ambienti desktop]] (''desktop environment''), che forniscono agli utilizzatori un ambiente grafico da cui è possibile gestire [[file]] e avviare programmi.
 
=== Shell testuali ===
{{vedi anche|Interfaccia a riga di comando}}
[[File:Award_BIOS_setup_utility.png|thumb|Il setup del [[BIOS]] è molto spesso a interfaccia testuale]]
[[File:Windows_PowerShell_1.0_PD.png|thumb|[[Windows PowerShell]] ha una tipica interfaccia a riga di comando.]]
Una ''shell'' testuale (o interprete dei comandi) può definirsi in due varianti.
 
La prima è 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.
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.
 
La seconda è 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]], DrDos, [[FreeDOS]]). Per gli utenti del vecchio [[MS-DOS]] la shell era il programa 'command.com'.
Anche le recenti versioni di Windows hanno una shell, il programma 'cmd.exe'.
 
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]].
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.
 
Altro esempio di shell testuale famosa è quella di [[OS/400]], conosciuta e usata da tutti coloro che hanno lavorato con i sistemi [[IBM]].
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.
 
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]].
 
Sono inoltre presenti potenti strumenti per collegare tra loro diversi programmi per svolgere compiti complessi, come le ''[[Pipe (informatica)#Funzione pipe nelle shell testuali|pipe]]'' e la [[redirezione]]. I programmi Unix più propensi ad essere collegati in questo modo sono detti [[Filtro (Unix)|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 moderne ''shell'' testuali posseggono diverse funzionalità ergonomiche, tra le quali:
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.
* 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 secondo piano]] 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à 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]].
 
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}}[https://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}} [https://www.mkssoftware.com/ MKS Toolkit]</ref>
== Shell grafiche ==
 
Il comando per cambiare la shell di [[login]] di un utente è ''[[chsh]]''.
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 essere umani.
 
=== Shell grafiche ===
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]].
{{vedi anche|Ambiente desktop}}
[[File:Interfaccia_Windows_7_Basic.png|thumb|[[File Explorer]] di [[Microsoft Windows]]]]
[[File:Finder_macOS_Sierra.png|thumb|[[Finder]] di [[MacOS]]]]
L'evoluzione grafica delle shell è rappresentata dalle cosiddette [[Interfaccia grafica|interfacce grafiche]] o GUI (''Graphic User Interface''), 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ù [[Usabilità|facile da usare]].
 
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 possono essere gestite da remoto ma con meno prestazione e meno eleganza. Gli utenti esperti inoltre le trovano meno efficenti per svolgere compiti ripetitivi, e meno flessibili.
 
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 grande aiuto le capacità di [[scripting]] che molte shell testuali incorporano) e meno flessibili.
Le shell grafiche sono state sicuramente un passo avanti per l'iterazione uomo macchina, ma quelle a riga di comando non possono essere sostituite per la loro potenza e velocità d'uso.
 
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.
[[Categoria:Sistema operativo]]
 
Le shell grafiche più conosciute sono sicuramente [[GNOME]] e [[KDE]] (nei sistemi Unix e Unix-like), [[Finder]] (in [[macOS]]) e [[File Explorer]] (nei sistemi Microsoft Windows)
[[en:Operating system shell]]
 
[[fr:Shell]]
Nei sistemi operativi [[Microsoft Windows]], il [[Istruzione (informatica)|comando]] ''<nowiki>shell:history</nowiki>'' accede una [[Cartella virtuale|cartella speciale di Windows]] che contiene i file locali modificati dall'utente, e per la quale è possibile impostare la creazione periodica di un [[Ripristino configurazione di sistema|punto di ripristino]]. Naturalmente, non è possibile consultare il contenuto della cartella "History" appartenente ad account differenti da quello corrente, anche se l'utente accede come amministratore del computer<ref>{{cita web | https://www.wikihow.it/Accedere-alla-Cronologia-di-Internet-Explorer | titolo = Come accedere alla cronologia nel computer | sito = [[Wikihow]] | citazione =| lingua = it, en | accesso = 31 Ottobre 2018 | urlarchivio = | dataarchivio = | urlmorto = no}}</ref>, o si dispone di [[Privilege escalation|privilegi equivalenti]]<ref>{{cita web | url = https://www.winhelponline.com/blog/shell-commands-to-access-the-special-folders/ | titolo = Istruzioni Shell per aprire le Cartelle Speciali utente di 10/8/7/Vista/XP | lingua = en | sito = winhelponline[[.com]] | accesso = 31 Ottobre 2018 | urlarchivio = | dataarchivio = | urlmorto = no}}</ref>.
[[ko:셸]]
 
[[pt:Shell]]
== Shell più diffuse ==
=== Shell testuali ===
[[File:Cmd_(windows).png|thumb|[[cmd.exe]] di [[Windows NT]]]]
* [[Bash]] (shell tipica dei sistemi [[GNU/Linux]])
* [[Bourne shell]] (shell dei primi sistemi [[Unix]])
* [[C shell]] (shell un tempo popolare su sistemi Unix)
* [[zsh|Z shell]] (conosciuta come zsh)
* [[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 dei sistemi operativi della famiglia [[Windows NT]])
* [[command.com]] (shell del sistema operativo [[MS-DOS]] e di alcuni sistemi [[Microsoft Windows]])
* [[Windows PowerShell]] (shell avanzata per sistemi Microsoft Windows)
 
=== Shell grafiche ===
[[File:CDE_2012_on_Linux.png|thumb|[[Common Desktop Environment]] di [[Unix]]]]
* [[GNOME]] (tipica dei sistemi [[GNU/Linux]] e [[Oracle Solaris|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 [[macOS]])
* [[File Explorer]] (la shell dei sistemi [[Microsoft Windows]])
* [[GreenGnome]] (shell replacement per sistemi [[Microsoft Windows]])
* [[Unity (software)|Unity]] (precedente shell ufficiale di [[Ubuntu]])
 
== Note ==
<references/>
 
== Voci correlate ==
* [[Interfaccia a riga di comando]]
* [[Interfaccia utente]]
* [[One-liner]]
* [[Esplora file]]
* [[Shell Unix]]
* [[Script]]
* [[Sistema operativo]]
* [[PowerShell]]
 
== Altri progetti ==
{{interprogetto|preposizione=sulla}}
 
== Collegamenti esterni ==
* {{Collegamenti esterni}}
* {{FOLDOC||shell}}
 
{{Portale|Informatica}}
 
[[Categoria:Interfaccia utente]]
[[Categoria:Unix]]