Introduzione
Linux viene fornito con diverse shell. Sebbene una distribuzione abbia una shell predefinita, gli utenti possono passare a un altro tipo o installarne uno nuovo.
Se stai cercando di cambiare la tua shell predefinita, conoscere i diversi tipi disponibili aiuta a fornire una chiara panoramica delle possibili opzioni.
Questo articolo mostra l'importanza e le caratteristiche di otto diverse shell Linux.
Cos'è una shell Linux e perché è importante?
Un guscio è un programma interprete della riga di comando che analizza e invia comandi al sistema operativo. Questo programma rappresenta l'interfaccia interattiva di un sistema operativo e il livello (o shell) più esterno del kernel. Consente a utenti e programmi di inviare segnali ed esporre le utilità di basso livello di un sistema operativo.
Il programma terminale (o emulatore terminale) consente l'interazione con le utilità del sistema. Quando eseguiamo qualsiasi comando nel terminale, come ls o cat, la shell analizza, valuta, ricerca ed esegue il programma corrispondente, se trovato.
Tipi di shell Linux
Linux offre diversi tipi di shell per affrontare vari problemi attraverso caratteristiche uniche. Le shell sviluppate insieme a Unix spesso hanno preso in prestito funzionalità l'una dall'altra con il progredire dello sviluppo.
Di seguito è riportata una breve panoramica dei diversi tipi di shell e delle loro caratteristiche .
1. Bourne Shell (sh)
Il conchiglia Bourne è stata la prima shell predefinita sui sistemi Unix, rilasciata nel 1979. Il nome del programma shell è sh e la posizione tradizionale è /bin/sh . La richiesta passa a $ , mentre il prompt di root è # .
La shell Bourne è diventata rapidamente popolare perché è compatta e veloce . Tuttavia, sh manca di alcune funzionalità standard, come:
- Espansione logica e aritmetica.
- Cronologia comandi.
- Altre funzionalità complete, come il completamento automatico.
I moderni sistemi simili a Unix hanno /bin/sh file eseguibile. Il programma non avvia la shell Bourne ma agisce come un file eseguibile che punta alla shell di sistema predefinita .
Per la maggior parte dei sistemi, il collegamento fisico o simbolico punta a bash , mentre su Ubuntu e Debian, il collegamento è trattino . In entrambi i casi, il collegamento imita il più possibile la shell Bourne.
2. C Shell (csh)
La shell C (csh ) è una shell Linux della fine degli anni '70 il cui obiettivo principale era migliorare l'uso interattivo e imitare il linguaggio C. Poiché il kernel Linux è scritto prevalentemente in C, la shell mira a fornire coerenza stilistica in tutto il sistema.
Il percorso dell'eseguibile della shell C è /bin/csh . Il prompt utilizza %
per utenti regolari e #
per l'utente root.
Nuove funzionalità interattive incluse:
- Cronologia del comando precedente.
- Alias definiti dall'utente per i programmi.
- Home directory relativa (~ ).
- Grammatica delle espressioni integrata.
I principali svantaggi della shell C sono:
- Incoerenze di sintassi.
- Nessun supporto per handle o funzioni di file standard di input/output (stdio).
- Non completamente ricorsivo, il che limita la gestione complessa dei comandi.
La shell C ha migliorato la leggibilità e le prestazioni rispetto alla shell Bourne. Le funzionalità interattive e le innovazioni in csh hanno influenzato tutte le successive shell Unix.
3. TENEX C Shell (tcsh)
La shell TENEX C (tcsh ) è un'estensione della shell C (csh ) si è fusa all'inizio degli anni '80. La shell è retrocompatibile con csh, con funzionalità e concetti aggiuntivi presi in prestito dal sistema operativo TENEX.
Il percorso eseguibile della shell TENEX C è in /bin/tcsh . Il prompt dell'utente è hostname:directory>
mentre il prompt di root è hostname:directory#
. Le prime versioni di Mac OS e la shell di root predefinita di FreeBSD usano tcsh.
Ulteriori caratteristiche della shell includono:
- Cronologia comandi avanzata.
- Completamento automatico programmabile.
- Corrispondenza caratteri jolly.
- Controllo del lavoro.
- Comando dove integrato.
Poiché tcsh è un'estensione della shell C, nella versione estesa persistono molti inconvenienti.
4. KornShell (ksh)
La KorShell (ksh ) è una shell e un linguaggio Unix basati sulla shell Bourne (sh) sviluppata all'inizio degli anni '80. La posizione è in /bin/ksh o /bin/ksh93 , mentre il prompt è lo stesso della shell Bourne ($
per un utente e #
per root).
La shell implementa le funzionalità della shell C e della shell Bourne, con l'obiettivo di concentrarsi sia sui comandi interattivi che sulle funzionalità di programmazione. KornShell aggiunge nuove funzionalità, come:
- Funzioni matematiche integrate e aritmetica in virgola mobile.
- Programmazione orientata agli oggetti.
- Estendibilità dei comandi integrati.
- Compatibile con la shell Bourne.
La shell è più veloce sia della shell C che della shell Bourne.
5. Debian Almquist Shell (trattino)
La Debian Almquist Shell (trattino ) è una shell Unix sviluppata alla fine degli anni '90 dalla shell Almquist (ash), che è stata trasferita su Debian e rinominata.
Dash è famoso per essere la shell predefinita per Ubuntu e Debian. La shell è minima e conforme a POSIX, il che la rende comoda per gli script di avvio del sistema operativo.
Il percorso eseguibile è /bin/dash , oltre a /bin/sh che punta a /bin/dash su Ubuntu e Debian. Il prompt utente predefinito e root è lo stesso della shell Bourne.
Le funzionalità di Dash includono:
- L'esecuzione è fino a 4 volte più veloce di bash e altre shell.
- Richiede spazio su disco, CPU e RAM minimi rispetto alle alternative.
Lo svantaggio principale è che dash non è compatibile con bash. Le funzionalità non incluse nel trattino sono note come "bashismi". Pertanto, gli script bash richiedono ulteriori rielaborazioni dei bashismi per funzionare correttamente.
6. Bourne Again Shell (bash)
Il shell di Bourne Again è una shell Unix e un linguaggio di comando creato come estensione della shell Bourne (sh ) nel 1989. Il programma shell è la shell di accesso predefinita per molte distribuzioni Linux e versioni precedenti di macOS.
Il nome della shell viene abbreviato in bash e la posizione è /bin/bash . Come la shell Bourne, il prompt di bash è $
per un utente normale e #
per root.
Bash introduce funzionalità non presenti nella shell Bourne, alcune delle quali includono:
- Espansione del tutore.
- Completamento del comando.
- Debug di base e gestione dei segnali.
- Cronologia comandi.
- Comandi condizionali, come le istruzioni bash if e bash case.
- Supporto Heredoc.
Nota: Alcune funzionalità non sono esclusive di Bash, ma piuttosto prese in prestito da altre shell.
Poiché bash è un superset della shell Bourne, la maggior parte degli script sh viene eseguita in bash senza ulteriori modifiche.
7. Z Shell (zsh)
Il guscio Z (zsh ) è una shell Unix creata come estensione della shell Bourne all'inizio degli anni '90. La shell ricca di funzionalità prende in prestito idee da ksh e tcsh per creare un'alternativa ben costruita e utilizzabile.
La posizione dell'eseguibile è in /bin/zsh . La richiesta è [email protected] location %
per utenti regolari e hostname#
per l'utente root. La shell Z è la shell predefinita di Kali Linux e Mac OS.
Alcune nuove funzionalità aggiunte a zsh includono:
- Cronologia condivisa tra tutte le sessioni di shell in esecuzione.
- Matrice migliorata e gestione delle variabili.
- Correzioni ortografiche e riempimento automatico del nome del comando.
- Varie modalità di compatibilità.
- Estendibilità tramite plugin.
La shell è altamente configurabile e personalizzabile grazie al supporto guidato dalla community tramite il framework Oh My Zsh.
8. Conchiglia interattiva amichevole (pesce)
La shell interattiva amichevole (pesce ) è una shell Unix rilasciata a metà degli anni 2000 con particolare attenzione all'usabilità. La shell ricca di funzionalità non richiede una configurazione aggiuntiva, il che la rende facile da usare sin dall'inizio.
Il percorso eseguibile predefinito è /usr/bin/fish . Il prompt dell'utente è [email protected] location>
, mentre il prompt di root è [email protected] location#
.
Le caratteristiche della shell includono:
- Suggerimenti avanzati/completamento delle schede in base alla cronologia della directory corrente.
- Utile evidenziazione della sintassi e messaggi di errore descrittivi.
- Configurazione basata sul Web.
- Cronologia comandi con opzioni di ricerca.
Lo svantaggio principale del pesce è la non conformità POSIX. Tuttavia, gli sviluppatori mirano a migliorare i progetti difettosi di POSIX.
Conclusione
Dopo aver letto diversi tipi di shell in questo articolo, hai una panoramica migliore delle shell Linux disponibili. Esistono altre shell per casi d'uso specifici e ogni tipo di shell risolve problemi diversi.