Guida verificata con Ubuntu: 20.04 22.04
Problemi in questa pagina? Segnalali in questa discussione
Introduzione
Questa guida spiega come abilitare le shell più comunemente usate nei sistemi unix-like in Ubuntu e derivate.
Per l'utilizzo della shell Bash si rimanda alla relativa guida.
Per l'utilizzo di altre shell si raccomanda di consultare i manuali dei singoli progetti.
Concetti generali
In informatica si usa il termine generico di shell per indicare una qualunque interfaccia che permette all'utente di interagire con il sistema. Possono quindi essere individuate due macro-categorie di shell, ossia:
- shell a riga di comando
shell grafiche (come ad esempio i vari ambienti desktop)
Tuttavia, nell'uso comune, è più frequente utilizzare il termine shell per indicare soltanto la prima categoria. Sarà pertanto questa l'accezione a cui si farà riferimento in questa guida.
La shell si può quindi definire come il programma che fornisce l'interfaccia testuale per il sistema operativo. La sua funzione principale è di leggere i comandi opportunamente inseriti nella console e di eseguirli.
Ubuntu utilizza di default la shell Bash, che è quindi in funzione ogni qual volta si utilizzi la riga di comando.
Pur essendo Bash uno strumento valido, completo e versatile, in alcuni casi potrebbe essere utile l'uso di altre shell. Infatti alcune di queste dispongono di caratteristiche e/o features avanzate, che talvolta possono risultare più funzionali a seconda del lavoro o dei compiti da svolgere: maggiore responsività, informazioni su file e directory, personalizzazioni estetiche, integrazione con alcuni linguaggi di programmazione ecc.
Installazione shell più comuni
Vengono riportate di seguito alcune delle shell più utilizzate nei sistemi Unix o derivati.
Ove necessario, è indicato il relativo pacchetto necessario all'installazione.
Nome |
Breve descrizione |
Pacchetto |
Bourne (sh) |
È la shell storica dei sistemi UNIX. Garantisce la compatibilità con gli standard POSIX. |
- |
Korn (ksh o ksh88/ksh93) |
È una shell sviluppata in passato dalla AT&T, retrocompatibile con Bourne. È la shell di default di OpenBSD. |
|
Bash (bash) |
Acronimo di «Bourne Again SHell», è nata come versione avanzata e retrocompatibile di Bourne. Viene utilizzata dalle maggiori distribuzioni GNU/Linux, rappresentandone de facto uno standard. È inoltre la shell utilizzata da macOS (fino alla versione 10.14 Mojave). |
preinstallata |
Debian Almquist Shell (dash) |
Nata originariamente come porting della shell ash di NetBSD, è stata quindi adattata agli standard Debian e rinominata nella forma attuale. È presente in Debian e derivate. |
preinstallata |
Z-Shell (zsh) |
Integra molte funzionalità, anche avanzate, mutuate da altre shell (autocompletamento, controllo ortografico, manipolazione avanzata di variabili e array, retrocompatibilità, temi ecc.). È la shell predefinita di Arch Linux e macOS (dalla versione 10.15 Catalina). |
|
C-Shell (csh) |
Creata da sh, utilizza una sintassi modellata dal linguaggio C. |
|
TC-Shell (tcsh) |
Basata su csh e da essa derivata, è presente in FreeBSD e in vecchie versioni di macOS. |
|
Friendly Interactive shell (fish) |
Nata con l'intento di essere user friendly, si presenta con molte funzionalità pre-abilitate di default, mutuate da altre shell. |
Numerose altre shell possono essere installate sia dai repository ufficiali (es.: elvish, mksh, rc, xonsh, yash, ecc.) sia da sorgenti esterne di terze parti (ad esempio Dune. Nushell, Windows PowerShell).
Individuare shell in uso
Digitare nel terminale:
echo $0
Verrà restituito il nome della shell in uso, ad esempio:
bash
Per conoscere anche il percorso digitare:
echo $SHELL
Verrà restituito un output simile al seguente:
/bin/bash
Shell presenti nel sistema
Il file /etc/shells contiene un elenco delle shell presenti nel sistema.
Per consultare il file digitare nel terminale:
cat /etc/shells
Verrà restituito un output simile al seguente:
# /etc/shells: valid login shells /bin/sh /bin/dash /bin/bash /bin/rbash /bin/zsh /usr/bin/zsh
Cambiare shell
Modifica temporanea
Per utilizzare temporaneamente una shell installata è sufficiente invocarla da terminale.
Ad esempio per utilizzare zsh è sufficiente digitare:zsh
Si noti che, a seconda della shell in uso, potrebbe modificarsi l'aspetto della console. Alcuni esempi: potrebbe comparire il solo carattere «$» e venir omesso il nome dell'utente, o potrebbero essere utilizzati altri simboli, oppure potrebbero comparire delle istruzioni a schermo.
Per individuare la shell in uso digitare il seguente comando per visualizzare i processi attivi nel terminale:
ps -T
L'output sarà simile al seguente:
PID TTY TIME CMD 13964 pts/0 00:00:00 bash 22450 pts/0 00:00:00 csh 22451 pts/0 00:00:00 ps
dove la shell in uso è csh.
Per ritornare ad usare la shell predefinita digitare:
exit
oppure invocare la shell impostata. Ad esempio, in Ubuntu e derivate con le impostazioni di default, digitare:
bash
Modifica permanente
È fortemente raccomandato provare temporaneamente la nuova shell e di assicurarsi del suo regolare funzionamento prima di effettuare le modifiche di seguito esposte.
Digitare nel terminale il comando:
chsh
Quando richiesto, inserire la password e quindi il percorso della shell desiderata.
Ad esempio per impostare zsh digitare:/usr/bin/zsh
- Chiudere il terminale oppure effettuare il logout affinché la modifica abbia effetto.
In alternativa è possibile effettuare l'operazione utilizzando un solo comando simile al seguente:
chsh -s /usr/bin/zsh
modificandolo con il percorso della shell desiderata.
Ulteriori risorse
KornShell (sito ufficiale)
DashAsBinSh (wiki internazionale)
Z-Shell (sito ufficiale)
Fish Shell (sito ufficiale)
Tabelle comparative (pagina enciclopedica)