Bash: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica |
m Bot: http → https |
||
| (32 versioni intermedie di 27 utenti non mostrate) | |||
Riga 1:
{{D|Bourne shell|commento=Propongo di dividere il programma dal linguaggio di programmazione, anche se derivato}}
{{Software
|SistemaOperativo2 = unix
|SistemaOperativo3 = macos
|NotaSistemaOperativo = <ref name="Distributions">{{cita web|lingua=en|url=https://tiswww.case.edu/php/chet/bash/bashtop.html#Distributions|titolo=Distributions|sito=The GNU Bourne-Again SHell}}</ref>
▲|SistemaOperativo = Multipiattaforma
▲|Linguaggio = C
▲|Genere = terminale
}}
{{Linguaggio di programmazione
Riga 25 ⟶ 16:
|tipizzazione = debole
}}
'''Bash''' ([[acronimo]] per '''B'''ourne '''A'''gain '''SH'''ell) è una [[shell (informatica)|shell]] sviluppata nell'ambito del [[progetto GNU]] come alternativa [[software libero|libera]] di [[Bourne shell]]. Il nome è un [[calembour]] poiché ''Bourne again'' (un'altra Bourne [shell]) è [[omofonia (linguistica)|omofono]] a ''born again'' ([[rinascita (religione)|rinascita]]).
Distribuita sotto licenza [[GNU General Public License|GNU GPL]] la shell è presente in diversi sistemi operativi [[Unix-like]] quali [[GNU/Linux]], [[FreeBSD]], [[NetBSD]], [[macOS]], [[Solaris (sistema operativo)|Solaris]] e [[MINIX]].<ref name="Distributions" /> È inoltre disponibile su [[Windows 10]] e [[Windows 11]] tramite [[Windows Subsystem for Linux]].<ref name="Distributions" /> In macOS bash era la shell di default fino a [[macOS Mojave]], mentre da [[macOS Catalina]] è stata sostituita da [[zsh]].<ref>{{cita web|lingua=en|url=https://support.apple.com/it-it/HT208050|titolo=Usare zsh come shell di default su Mac|data=5 novembre 2022|accesso=1 maggio 2023}}</ref>
== Descrizione ==
=== Caratteristiche ===▼
Tecnicamente ''bash'' è un clone evoluto della shell standard di Unix (''/bin/sh''
Si tratta di un [[interprete (informatica)|interprete]] di [[istruzione (informatica)|comandi]] che permette all'utente di comunicare col [[sistema operativo]] attraverso una serie di [[funzione (informatica)|funzioni]] predefinite, o di eseguire [[programma (informatica)|programmi]] e script.▼
▲== Caratteristiche ==
▲Tecnicamente ''bash'' è un clone evoluto della shell standard di Unix (''/bin/sh''.) Altre shell alternative a ''bash'' e piuttosto diffuse sono la [[Korn shell]], la [[C shell]] e [[tcsh]].
▲Si tratta di un [[interprete (informatica)|interprete]] di [[istruzione (informatica)|comandi]] che permette all'utente di comunicare col [[sistema operativo]] attraverso una serie di [[funzione (informatica)|funzioni]] predefinite, o di eseguire [[programma (informatica)|programmi]].
''Bash'' è in grado di eseguire i comandi che le vengono passati, utilizzando la [[redirezione]] dell'input e dell'output per eseguire più programmi in cascata in una [[pipeline software]], passando l'output del comando precedente come input del comando successivo.
Oltre a questo, essa mette a disposizione un semplice [[linguaggio di scripting]] nativo che permette di svolgere compiti più complessi, non solo raccogliendo in uno [[script]] una serie di comandi, ma anche utilizzando [[variabile (informatica)|variabili]], funzioni e [[struttura di controllo|strutture di controllo di flusso]].
=== Bash e lo standard POSIX ===
Il comportamento predefinito di ''bash'' diverge da quello dello standard [[POSIX]], ma esso si può ottenere in quattro modi:
* specificando l'opzione "<
* invocandola con il nome "<
* avviandola dopo aver impostato la [[Variabile d'ambiente (Unix)|variabile d'ambiente]] <code>POSIXLY_CORRECT</code><ref>{{cita web
|url=
|titolo=Bash Variables
|accesso=4 gennaio 2009
Riga 51 ⟶ 42:
}}</ref> con un valore qualsiasi;
* eseguendo in essa il comando interno "<code>set -o posix</code>"<ref>{{cita web
|url=
|titolo=The Set Builtin
|accesso=2 gennaio 2009
Riga 58 ⟶ 49:
}}</ref>.
=== File letti all'avvio ===
Alla partenza, ''bash'' tenta di caricare automaticamente una serie di file:
* se si tratta di una shell di [[login]], ''bash'' tenta di caricare:
*# il file "<
*# solo il primo tra i file "<
*# il file "<
All'uscita di una shell interattiva di login, bash carica il file <
* se si tratta di una shell interattiva non di login, ''bash'' tenta di caricare il solo file "<
L'utente può modificare i file nella propria ''home directory'' per personalizzare il proprio ambiente di lavoro.
Quando ''bash'' è avviata non interattivamente (ad esempio per eseguire uno [[script]] di shell) essa controlla se esiste la [[Variabile d'ambiente (Unix)|variabile d'ambiente]] <
== Esempi esplicativi ==
Il seguente [[script]] permette di creare un archivio in "<
<
#!/bin/bash
tar -vzcf /tmp/home.tgz ~
</syntaxhighlight>
Un altro esempio per i sistemi basati su [[Debian]] è quello di poter aggiornare e pulire il sistema con il seguente script:
<
#!/bin/bash
sudo apt-get update
Riga 87 ⟶ 78:
sudo apt-get autoclean
sudo apt-get clean
</syntaxhighlight>
Creando in una delle directory elencate dalla [[Variabile d'ambiente (Unix)|variabile d'ambiente]] <
=== Strutture condizionali ===
Confronta se i file "<
<
#!/bin/bash
if cmp file_a file_b &>/dev/null; then
Riga 101 ⟶ 92:
echo "I File a e b sono diversi."
fi
</syntaxhighlight>
Controlla se il file "<
<
#!/bin/bash
if [ -f prova.txt ]; then
Riga 111 ⟶ 102:
echo "Il file prova.txt non esiste o non è un file"
fi
</syntaxhighlight>
Chiede una riga in input e mostra un messaggio in base al contenuto:
<
#!/bin/bash
Riga 135 ⟶ 126:
;;
esac
</syntaxhighlight>
== Note ==
<references/>
== Bibliografia ==
* {{RivistaVG|mc|205|176-181|4|2000|titolo=Come funziona Linux: introduzione alla shell}}
* {{RivistaVG|mc|206|178-185|5|2000|titolo=Come funziona Linux: funzioni avanzate della shell e comandi utili per la programmazione di script}}
* {{RivistaVG|mc|207|174-179|6|2000|titolo=Come funziona Linux: le strutture di controllo della shell}}
* {{Cita testo|articolo=Una conchiglia preziosa chiamata Bash|url={{RivistaVG/IA|linux-magazine-it-018|33}}|formato=jpg|rivista=[[Linux Magazine]]|numero=18|data=aprile 2002|editore=Edizioni Master|pp=33-34|issn=1592-8152}}
* {{Cita web|https://www.gnu.org/software/bash/manual/bash.pdf|Bash Reference Manual|15 marzo 2017|lingua=en|formato=pdf|autore=Chet Ramey|autore2=Brian Fox|data=settembre 2016}}
== Voci correlate ==
Riga 151 ⟶ 149:
== Altri progetti ==
{{Interprogetto}}
== Collegamenti esterni ==
* {{Collegamenti esterni}}
*
*
* {{cita web | 1 = http://www.pluto.it/files/ildp/guide/abs/index.html | 2 = Guida avanzata di scripting bash | accesso = 16 gennaio 2011 | urlarchivio = https://web.archive.org/web/20101229052846/http://www.pluto.it/files/ildp/guide/abs/index.html | dataarchivio = 29 dicembre 2010 | urlmorto = sì }}
*
*
* {{cita web|1=http://www.linuxcommand.org/learning_the_shell.php|2=Imparare la shell|lingua=en|accesso=15 giugno 2007|urlarchivio=https://web.archive.org/web/20070613131339/http://linuxcommand.org/learning_the_shell.php|dataarchivio=13 giugno 2007|urlmorto=sì}}
* {{cita web | 1 = http://linux.collectiontricks.it/wiki/Guida_ai_comandi_base_della_shell_in_GNU/Linux | 2 = Semplice guida ai principali comandi della bash | accesso = 3 ottobre 2016 | urlarchivio = https://web.archive.org/web/20161005083314/http://linux.collectiontricks.it/wiki/Guida_ai_comandi_base_della_shell_in_GNU/Linux | dataarchivio = 5 ottobre 2016 | urlmorto = sì }}
* {{
{{GNU}}
{{Controllo di autorità}}
{{Portale|
[[Categoria:Linguaggi di scripting]]
[[Categoria:Software del progetto GNU]]
| |||