Cos'è una shell?
Una shell è un programma che fornisce un'interfaccia tra un utente e un kernel del sistema operativo (OS). Un sistema operativo avvia una shell per ogni utente quando l'utente effettua il login o apre una finestra del terminale o della console.
Un kernel è un programma che:
- Controlla tutte le operazioni del computer.
- Coordina tutte le utilità in esecuzione
- Assicura che le utilità in esecuzione non interferiscano tra loro o consumino tutte le risorse di sistema.
- Programma e gestisce tutti i processi di sistema.
Interfacciandosi con un kernel, una shell fornisce all'utente un modo per eseguire utilità e programmi.
Ambiente utente
La shell fornisce anche un ambiente utente che è possibile personalizzare utilizzando i file di inizializzazione. Questi file contengono impostazioni per le caratteristiche dell'ambiente utente, ad esempio:
- Cerca i percorsi per trovare i comandi.
- Autorizzazioni predefinite sui nuovi file.
- Valori per variabili utilizzate da altri programmi.
- Valori che puoi personalizzare.
Quali sono le diverse conchiglie?
Le sezioni seguenti descrivono le shell del sistema operativo per lo più disponibili sul sistema operativo UNIX/Linux. Vengono inoltre descritte le funzionalità della shell e i relativi prompt predefiniti.
1. La Bourne Shell
La shell Bourne (sh), scritta da Steve Bourne presso AT&T Bell Labs, è la shell UNIX originale. È la shell preferita per la programmazione di shell per la sua compattezza e velocità. Uno svantaggio della shell Bourne è che manca di funzionalità per l'uso interattivo, come la capacità di richiamare comandi precedenti (cronologia). La shell Bourne manca anche di una gestione aritmetica e logica incorporata delle espressioni.
La shell Bourne è la shell predefinita del sistema operativo Solaris. È la shell standard per gli script di amministrazione del sistema Solaris. Per la Bourne shell:
- Il nome del percorso completo del comando è /bin/sh e /sbin/sh .
- Il prompt predefinito dell'utente non root è $ .
- Il prompt predefinito dell'utente root è # .
2. La shell C
La shell C (csh):
- È un miglioramento UNIX scritto da Bill Joy presso l'Università della California a Berkeley.
- Funzioni integrate per uso interattivo, come alias e cronologia dei comandi .
- Include comode funzioni di programmazione, come aritmetica integrata e una sintassi di espressione tipo C .
Per la shell C:
- Il nome del percorso completo del comando è /bin/csh .
- Il prompt predefinito dell'utente non root è hostname % .
- Il prompt predefinito dell'utente root è il nome host # .
3. Il guscio di Korn
La shell Korn (ksh):
- È stato scritto da David Korn presso AT&T Bell Labs
- È un superset della shell Bourne.
- Supporta tutto nella shell Bourne.
- Ha caratteristiche interattive paragonabili a quelle della shell C.
- Include comode funzioni di programmazione come aritmetica integrata e array simili a C , funzioni e strutture di manipolazione delle stringhe .
- È più veloce della shell C.
- Esegue gli script scritti per la shell Bourne.
Per la shell Korn:
- Il nome del percorso completo del comando è /bin/ksh .
- Il prompt predefinito dell'utente non root è $ .
- Il prompt predefinito dell'utente root è # .
4. La shell GNU Bourne-Again
La shell GNU Bourne-Again (bash):
- È compatibile con la shell Bourne.
- Incorpora utili funzioni delle shell Korn e C.
- Ha i tasti freccia mappati automaticamente per il richiamo e la modifica dei comandi.
Per la shell GNU Bourne-Again:
- Il nome del percorso completo del comando è /bin/bash .
- Il prompt predefinito per un utente non root è bash-x.xx$ . (Dove x.xx indica il numero di versione della shell. Ad esempio, bash-3.50$)
- Il prompt predefinito dell'utente root è bash-x.xx# . (Dove x.xx indica il numero di versione della shell. Ad esempio, bash-3.50$#)
Ecco un breve confronto tra tutte e 4 le shell e le loro proprietà.
Shell | Prompt predefinito (utente non root) | Prompt predefinito (utente root) | |
---|---|---|---|
The Bourne Shell (sh) | /bin/sh e /sbin/sh | $ | # |
La shell C (csh) | /bin/csh | % | # |
Il guscio di Korn (ksh) | /bin/ksh | $ | # |
La shell GNU Bourne-Again (Bash) | /bin/bash | bash-x.xx$ | bash-x.xx# |