#format wiki
#language it
<
>
<>
<>
= Introduzione =
Questa guida spiega come abilitare le '''shell''' più comunemente usate nei [[https://it.wikipedia.org/wiki/Unix-like|sistemi unix-like]] in Ubuntu e derivate.
Per l'utilizzo della shell '''Bash''' si rimanda alla relativa [[Programmazione/LinguaggioBash|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 [[AmbienteGrafico|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 [[AmministrazioneSistema/Terminale|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'[[AmministrazioneSistema/InstallareProgrammi|installazione]].
|| '''Nome''' ||<60%:> '''Breve descrizione'''||<20%:> '''Pacchetto''' ||
||<:> '''Bourne''' ('''sh''') ||<(> È la shell storica dei sistemi UNIX. Garantisce la compatibilità con gli [[https://it.wikipedia.org/wiki/POSIX|standard POSIX]]. || - ||
||<:> '''Korn''' ('''ksh''' o '''ksh88'''/'''ksh93''') ||<(> È una shell sviluppata in passato dalla AT&T, retrocompatibile con Bourne. È la shell di default di OpenBSD. || [[apt://ksh|ksh]] ||
||<:> '''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). || [[apt://zsh|zsh]] ||
||<:> '''C-Shell''' ('''csh''') ||<(> Creata da '''sh''', utilizza una sintassi modellata dal linguaggio C. || [[apt://csh|csh]] ||
||<:> '''TC-Shell''' ('''tcsh''') ||<(> Basata su '''csh''' e da essa derivata, è presente in FreeBSD e in vecchie versioni di macOS. || [[apt://tcsh|tcsh]] ||
||<:> '''Friendly Interactive shell''' ('''[[Programmazione/CambiareShell/Fish|fish]])''' ||<(> Nata con l'intento di essere ''user friendly'', si presenta con molte funzionalità pre-abilitate di default, mutuate da altre shell. || [[apt://fish|fish]] ||
{{{#!wiki tip
Numerose altre shell possono essere installate sia dai [[Repository|repository ufficiali]] (es.: '''elvish''', '''mksh''', '''rc''', '''xonsh''', '''yash''', ecc.) sia da sorgenti esterne di terze parti (ad esempio [[https://github.com/adam-mcdaniel/dune|Dune]]. [[https://www.nushell.sh/|Nushell]], [[https://docs.microsoft.com/en-us/powershell/|Windows PowerShell]]).<
>
##Un elenco (non esaustivo, ma provvisto di link e riferimenti) può essere consultato in [[https://www.freebsd.org/ports/shells.html|questa pagina]].
}}}
= Individuare shell in uso =
Digitare nel [[AmministrazioneSistema/Terminale|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 [[AmministrazioneSistema/Terminale|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 [[AmministrazioneSistema/Terminale|terminale]].<
>Ad esempio per utilizzare '''zsh''' è sufficiente digitare:{{{
zsh
}}}
{{{#!wiki note
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 ==
{{{#!wiki important
È fortemente raccomandato provare temporaneamente la nuova shell e di assicurarsi del suo regolare funzionamento prima di effettuare le modifiche di seguito esposte.
}}}
0. Digitare nel [[AmministrazioneSistema/Terminale|terminale]] il comando:{{{
chsh
}}}
0. Quando richiesto, inserire la password e quindi il [[#disponibili|percorso]] della shell desiderata.<
>Ad esempio per impostare '''zsh''' digitare:{{{
/usr/bin/zsh
}}}
0. 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 =
* [[https://wiki.ubuntu.com/ChangingShells|Wiki internazionale]]
* [[https://it.wikipedia.org/wiki/Shell_(informatica)|Voce enciclopedica]]
* [[http://www.kornshell.com/|KornShell]] (sito ufficiale)
* [[https://wiki.ubuntu.com/DashAsBinSh|DashAsBinSh]] (wiki internazionale)
* [[http://www.zsh.org/|Z-Shell]] (sito ufficiale)
* [[https://fishshell.com/|Fish Shell]] (sito ufficiale)
* [[https://en.wikipedia.org/wiki/Comparison_of_command_shells|Tabelle comparative]] (pagina enciclopedica)
* [[http://www.softlab.ntua.gr/facilities/documentation/unix/shelldiff.html|Informazioni e consigli sulla scelta della shell]] (inglese)
* [[https://www.ibm.com/developerworks/library/l-linux-shells/|Breve storia della shell in Linux]]
* [[https://hyperpolyglot.org/unix-shells|Confronto principali Unix Shells su hyperpolyglot.org]]
* [[AmministrazioneSistema/Terminale|Guida comandi base del terminale]]
* [[Programmazione/LinguaggioBash|Guida bash scripting]]
----
CategoryProgrammazione