
La maggior parte delle distribuzioni Linux include la shell bash per impostazione predefinita, ma è anche possibile passare a un altro ambiente shell. Zsh è un'alternativa particolarmente popolare e ci sono altre conchiglie, come cenere, trattino, pesce e tcsh. Ma qual è la differenza, e perché ce ne sono così tanti?
Cosa fanno le conchiglie?
Quando si accede dalla riga di comando o si avvia una finestra del terminale su Linux, il sistema avvia il programma shell. Le shell offrono un modo standard per estendere l'ambiente della riga di comando. Se lo desideri, puoi sostituire la shell predefinita con un'altra.
Il primo ambiente shell è stato Thompson Shell, sviluppato presso Bell Labs e rilasciato nel 1971. Da allora gli ambienti Shell hanno sviluppato il concetto aggiungendo una varietà di nuove funzionalità, funzionalità e miglioramenti della velocità.
Ad esempio, Bash offre il completamento di nomi di comandi e file, funzionalità di scripting avanzate, cronologia dei comandi, colori configurabili, alias dei comandi e una varietà di altre funzionalità che non erano disponibili nel 1971 quando fu lanciata la prima shell.
La shell viene anche utilizzata in background da vari servizi di sistema. Le distribuzioni Linux includono molte funzioni scritte come script di shell. Questi script sono comandi e altre funzioni avanzate di scripting della shell vengono eseguite nell'ambiente shell.
Conchiglie che portano a Bash: sh, csh, tsh e ksh
RELAZIONATO: Che cos'è Unix e perché è importante?
Il progenitore più importante delle conchiglie moderne è la conchiglia Bourne, nota anche come “sh”, che prende il nome dal suo creatore Stephen Bourne che lavorava presso i Bell Lab di AT&T. Rilasciato nel 1979, divenne l'interprete dei comandi predefinito in Unix a causa del suo supporto per la sostituzione dei comandi, il piping, le variabili, i test delle condizioni e il looping, insieme ad altre funzionalità. Non offriva molta personalizzazione per gli utenti e non supportava funzioni moderne come alias, completamento dei comandi e funzioni della shell (anche se quest'ultima è stata infine aggiunta).
La shell C, o “csh”, è stata sviluppata alla fine degli anni '70 da Bill Joy alla University of California, Berkley. Ha aggiunto molti elementi interattivi con cui gli utenti potevano controllare i propri sistemi, come alias (scorciatoie per comandi lunghi), capacità di gestione dei lavori, cronologia dei comandi e altro ancora. È stato modellato sul linguaggio di programmazione C, in cui è stato scritto lo stesso sistema operativo Unix. Ciò significava anche che gli utenti della shell Bourne dovevano imparare C in modo da poter inserire i comandi in esso. Inoltre, csh aveva alcuni bug che dovevano essere eliminati da utenti e creatori per un lungo periodo di tempo. Le persone finirono per usare la shell Bourne per gli script perché gestiva meglio i comandi non interattivi, ma si bloccava con la shell C per un uso normale.

Nel tempo, molte persone hanno corretto i bug e aggiunto funzionalità alla shell C, culminando in una versione migliorata di csh nota come “tcsh”. Ma csh era ancora l'impostazione predefinita nei computer basati su Unix e aveva aggiunto alcune funzionalità non standard. David Korn di Bell Labs ha lavorato su KornShell, o “ksh”, che ha cercato di migliorare la situazione essendo retrocompatibile con il linguaggio della shell Bourne ma aggiungendo molte funzionalità dalla shell csh. È stato rilasciato nel 1983, ma con una licenza proprietaria. Non era software libero fino agli anni 2000, quando fu rilasciato con varie licenze open source.
La nascita di bash

L'interfaccia del sistema operativo portatile per Unix, o POSIX, è stata un'altra risposta alle frenetiche implementazioni proprietarie di csh. Ha creato con successo uno standard per l'interpretazione dei comandi (tra le altre cose) e alla fine ha rispecchiato molte delle funzionalità di KornShell. Allo stesso tempo, il Progetto GNU stava tentando di creare un sistema operativo gratuito e compatibile con Unix. Il progetto GNU ha sviluppato una shell di software libero per far parte del suo sistema operativo gratuito e l'ha chiamata “Bourne Again Shell”, o “bash”.
Bash è stato migliorato nei decenni dalla sua prima versione nel 1989, ma oggi è ancora la shell predefinita sulla maggior parte delle distribuzioni Linux. È anche la shell predefinita su macOS di Apple ed è disponibile per l'installazione su Windows 10 di Microsoft.
Conchiglie più recenti: frassino, trattino, zsh e pesce
Mentre la comunità Linux si è affidata a Bash da anni, gli sviluppatori non hanno smesso di creare nuove shell quando Bash è stato rilasciato 28 anni fa.
Kenneth Almquist ha creato un clone di shell Bourne noto come shell Almquish, A Shell, “ash”, o talvolta semplicemente “sh”. era anche compatibile con POSIX e divenne la shell predefinita in BSD, un ramo diverso di Unix. Il guscio di frassino è più leggero di bash, il che lo rende popolare nei sistemi Linux incorporati. Se hai un telefono Android rootato con BusyBox installato o qualsiasi altro dispositivo con la suite di software BusyBox, sta usando il codice di Ash.
Debian ha sviluppato un ambiente shell basato su ash e lo ha chiamato “dash”. È progettato per essere compatibile con POSIX e leggero, quindi è più veloce di Bash, ma non avrà tutte le sue caratteristiche. Ubuntu utilizza la dash dash come shell predefinita per le attività non interattive, velocizzando gli script della shell e altre attività in esecuzione in background. Ubuntu utilizza comunque bash per shell interattive, quindi gli utenti hanno ancora l'ambiente interattivo completo.

Una delle shell più recenti più popolari è la shell Z, o “zsh”. Creata da Paul Falstad nel 1990, zsh è una shell in stile Bourne che contiene le funzionalità che troverai in bash e molto altro ancora. Ad esempio, zsh ha il controllo ortografico, la possibilità di controllare accessi / disconnessioni, alcune funzionalità di programmazione integrate come bytecode, supporto per la notazione scientifica nella sintassi, consente l'aritmetica in virgola mobile e altre funzionalità.

Un'altra shell più recente è la Friendly Interactive Shell, o “fish”, rilasciata nel 2005. Ha una sintassi unica da riga di comando progettata per essere un po 'più facile da imparare, ma non derivata dalla shell Bourne o dalla shell C. È un'idea interessante, ma ciò che impari usando il pesce non ti aiuterà necessariamente a usare bash e altri gusci derivati da Bourne.
Quale dovresti scegliere? (e perché Zsh è popolare)
Non è necessario scegliere una shell. Il tuo sistema operativo sceglie la shell predefinita per te e quella scelta è quasi sempre bash. Siediti di fronte a una distribuzione Linux — o persino a un Mac — e avrai quasi sempre un ambiente shell bash. Bash ha alcune funzionalità avanzate, ma probabilmente non le userete se non programmate gli script di shell.
Sui sistemi Linux embedded o BSD, finirai con la shell ash. Ma ash è una shell a base di Bourne ed è ampiamente compatibile con bash. Qualsiasi conoscenza che possiedi dall'uso di bash verrà trasferita all'utilizzo di una shell ash o dash, sebbene alcune funzionalità di scripting avanzate non siano disponibili in questa shell leggera.
Quasi ogni shell che incontrerai è basata su Bourne e funziona in modo simile, incluso zsh.
Ecco perché zsh è popolare. Questa nuova shell è compatibile con bash, ma include più funzionalità. La shell zsh offre una correzione ortografica integrata, un migliore completamento della riga di comando, moduli caricabili che fungono da plug-in per la shell, alias globali che consentono di aliasare i nomi dei file o qualsiasi altra cosa sulla riga di comando anziché solo comandi, e più supporto a tema. È come bash, ma con molti extra, funzionalità aggiuntive e opzioni configurabili che potresti apprezzare se passi molto tempo dalla riga di comando.
Se hai familiarità con bash, puoi passare a zsh senza apprendere una sintassi diversa: otterrai solo funzionalità aggiuntive. se hai familiarità con zsh, puoi passare a bash senza apprendere una sintassi diversa: non avrai accesso a queste funzionalità.

“Oh My ZSH” è uno strumento che ti aiuta ad abilitare più facilmente i plug-in zsh e a passare da un tema premade all'altro, personalizzando rapidamente la tua shell zsh senza passare ore a modificare le cose.
Ci sono anche altre conchiglie. Ad esempio, la shell tcsh è ancora in giro ed è ancora un'opzione. FreeBSD usa tsch come shell root predefinita e ash come shell interattiva predefinita. Se usi la programmazione C regolarmente, tsch potrebbe essere la soluzione migliore per te. Tuttavia, non è affatto usato come bash o zsh.
Come passare da una conchiglia all'altra
È facile passare a una nuova shell per provarlo. Installa la shell dal gestore dei pacchetti della tua distribuzione Linux e digita il comando per avviare la shell.
Ad esempio, supponiamo che tu voglia provare zsh su Ubuntu. Avresti eseguito i seguenti comandi per installare e quindi avviarlo:
sudo apt install zsh zsh
Saresti quindi seduto a una shell zsh. Genere ” exit “Alla shell per lasciarlo e tornare alla shell corrente.

Questo è solo temporaneo. Ogni volta che apri una nuova finestra del terminale o accedi al tuo sistema dalla riga di comando, vedrai la tua shell predefinita. Per cambiare la shell che vedi quando esegui l'accesso, nota come shell di accesso, puoi generalmente usare il chsh o “Cambia shell”, comando.
Per usare questo comando, devi prima trovare il percorso completo della tua shell con il comando quale. Ad esempio, supponiamo di voler passare alla shell zsh. Avremmo eseguito il seguente comando:
which zsh
Su Ubuntu, questo ci dice che il binario zsh è archiviato in / usr / bin / zsh.
Esegui il comando seguente, inserisci la password e ti verrà chiesto di scegliere una nuova shell di accesso:
chsh
Secondo il comando sopra, inseriremmo /usr/bin/zsh . La shell zsh sarebbe quindi il nostro default fino a quando non avessimo eseguito il file chsh comando e cambiato di nuovo.

