Bash

Da Wikipedia, l'enciclopedia libera.
Vai alla navigazione Vai alla ricerca
Bash
software
Logo
Logo
Schermata di esempio
Schermata di esempio
Genere Shell
Sviluppatore progetto GNU
Data prima versione 8 giugno 1989
Ultima versione 5.2.21 (9 novembre 2023)
Sistema operativo GNU/Linux [1]
Unix-like
macOS
Linguaggio C
Licenza GNU GPL v3+
( licenza libera )
Sito web www.gnu.org/software/bash/
Bash
linguaggio di programmazione
Autore Chet Ramey , Brian Fox
Data di origine 1989
Ultima versione 5.2.21 (9 novembre 2023)
Utilizzo scripting di sistema
Paradigmi programmazione procedurale
Tipizzazione debole
Influenzato da ALGOL 68, Bourne shell , C shell e Korn shell
Implementazione di riferimento
Licenza GNU GPL v3+
Sito web www.gnu.org/software/bash/

Bash ( acronimo per B ourne A gain SH ell) e una shell sviluppata nell'ambito del progetto GNU come alternativa libera di Bourne shell . Il nome e un calembour poiche Bourne again (un'altra Bourne [shell]) e omofono a born again ( rinascita ).

Distribuita sotto licenza GNU GPL la shell e presente in diversi sistemi operativi Unix-like quali GNU/Linux , FreeBSD , NetBSD , macOS , Solaris e MINIX . [1] E inoltre disponibile su Windows 10 e Windows 11 tramite Windows Subsystem for Linux . [1] In macOS bash era la shell di default fino a macOS Mojave , mentre da macOS Catalina e stata sostituita da zsh . [2]

Descrizione [ modifica | modifica wikitesto ]

Caratteristiche [ modifica | modifica wikitesto ]

Tecnicamente bash e 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 , Zsh e tcsh .

Si tratta di un interprete di comandi che permette all'utente di comunicare col sistema operativo attraverso una serie di funzioni predefinite, o di eseguire programmi e script.

Bash e in grado di eseguire i comandi che le vengono passati, utilizzando la redirezione dell'input e dell'output per eseguire piu 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 piu complessi, non solo raccogliendo in uno script una serie di comandi, ma anche utilizzando variabili , funzioni e strutture di controllo di flusso .

Bash e lo standard POSIX [ modifica | modifica wikitesto ]

Il comportamento predefinito di bash diverge da quello dello standard POSIX , ma esso si puo ottenere in quattro modi:

  • specificando l'opzione " --posix " all'avvio, ad esempio con " bash --posix ";
  • invocandola con il nome " sh ", come e il caso in molti sistemi GNU/Linux in cui " /bin/sh " e un collegamento simbolico a " /bin/bash ";
  • avviandola dopo aver impostato la variabile d'ambiente POSIXLY_CORRECT [3] con un valore qualsiasi;
  • eseguendo in essa il comando interno " set -o posix " [4] .

File letti all'avvio [ modifica | modifica wikitesto ]

Alla partenza, bash tenta di caricare automaticamente una serie di file:

  • se si tratta di una shell di login , bash tenta di caricare:
    1. il file " /etc/profile "
    2. solo il primo tra i file " .bash_profile ", " .bash_login " e " .profile " collocati nella home directory dell'utente e che risulti essere disponibile;
    3. il file " .bashrc " collocato nella home directory dell'utente;

All'uscita di una shell interattiva di login, bash carica il file .bash_logout collocato nella home dell'utente (se disponibile).

  • se si tratta di una shell interattiva non di login, bash tenta di caricare il solo file " .bashrc " collocato nella home directory dell'utente;

L'utente puo modificare i file nella propria home directory per personalizzare il proprio ambiente di lavoro.

Quando bash e avviata non interattivamente (ad esempio per eseguire uno script di shell) essa controlla se esiste la variabile d'ambiente BASH_ENV o ENV ed in caso positivo carica il file specificato dal valore della variabile (se bash e avviata in modalita POSIX controlla solo ENV ). Procede quindi ad eseguire il resto (script o altro).

Esempi esplicativi [ modifica | modifica wikitesto ]

Il seguente script permette di creare un archivio in " /tmp/my-backup.tar.gz " contenente l'intera propria cartella personale (tenendo conto che " ~ " rappresenta " /home/ proprionomeutente "):

#!/bin/bash          

tar
 -vzcf
 /tmp/home.tgz
 ~

Un altro esempio per i sistemi basati su Debian e quello di poter aggiornare e pulire il sistema con il seguente script:

#!/bin/bash          

sudo
 apt-get
 update
sudo
 apt-get
 upgrade
sudo
 apt-get
 dist-upgrade
sudo
 apt-get
 autoclean
sudo
 apt-get
 clean

Creando in una delle directory elencate dalla variabile d'ambiente $PATH un file con il contenuto sopra esposto ed assegnandoli i permessi di esecuzione si puo ottenere una comoda e semplice utility che puo essere usata esattamente come qualunque altro file eseguibile .

Strutture condizionali [ modifica | modifica wikitesto ]

Confronta se i file " file_a " e " file_b " sono identici tramite il comando cmp (effettuando la redirezione dello standard output e dello standard error a /dev/null in modo da nascondere i suoi messaggi), e scrive a video il risultato:

#!/bin/bash

if
 cmp
 file_a
 file_b
  &
>/dev/null
;
 then
 
   echo
 "I File a e b sono identici."

else
 
   echo
 "I File a e b sono diversi."

fi

Controlla se il file " prova.txt " esiste e scrive un messaggio al riguardo:

#!/bin/bash

if
 [
 -f
 prova.txt
 ]
;
 then
 
    echo
 "Il file prova.txt esiste."

else
 
    echo
 "Il file prova.txt non esiste o non e un file"

fi

Chiede una riga in input e mostra un messaggio in base al contenuto:

#!/bin/bash


echo
 "Scrivi qualcosa e premi Invio:"

read
 linea

case
 "
$linea
"
 in

    uno
)

        echo
 "Hai digitato 'uno'"

        ;;


    due
|
tre
)
 
        echo
 "Hai digitato 'due' oppure 'tre'"

        ;;
 
    q*
)

        echo
 "Hai digitato qualcosa che inizia con 'q'"

        ;;

    *
)

        echo
 "Hai digitato qualcosa che non conosco"

        ;;
      
esac

Note [ modifica | modifica wikitesto ]

  1. ^ a b c ( EN ) Distributions , su The GNU Bourne-Again SHell .
  2. ^ ( EN ) Usare zsh come shell di default su Mac , su support.apple.com , 5 novembre 2022. URL consultato il 1º maggio 2023 .
  3. ^ ( EN ) Bash Variables , su Bash Reference Manual . URL consultato il 4 gennaio 2009 .
  4. ^ ( EN ) The Set Builtin , su Bash Reference Manual . URL consultato il 2 gennaio 2009 .

Bibliografia [ modifica | modifica wikitesto ]

Voci correlate [ modifica | modifica wikitesto ]

Altri progetti [ modifica | modifica wikitesto ]

Collegamenti esterni [ modifica | modifica wikitesto ]

Controllo di autorita GND ( DE 4492523-2  · BNF ( FR cb125416570 (data)
  Portale Software libero : accedi alle voci di Wikipedia che trattano di software libero