#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