bionic (1) bash.1.gz

Provided by: manpages-it_3.73-2_all bug

NOME

       bash - GNU Bourne-Again SHell

SINTASSI

       bash [opzioni] [file]

       Bash is Copyright (C) 1989-2011 by the Free Software Foundation, Inc.

DESCRIZIONE

       Bash  è  un  interprete di linguaggio di comandi sh-compatibile che esegue i comandi letti dallo standard
       input o da un file.  Bash inoltre incorpora utili caratteristiche delle shell Korn e C (ksh e csh).

       Bash è progettata per essere un'implementazione conforme alla parte Shell and Utilities della IEEE  POSIX
       specification  (IEEE  Standard  1003.1).   Bash  può essere configurata per essere conforme allo standard
       POSIX in modo predefinito.

OPZIONI

       Tutte le opzioni monocarattere della shell documentate nella  descrizione  del  comando  incorporato  set
       possono  essere  usate  come  opzioni  quando la  shell è invocata.  In aggiunta, quando è invocata, bash
       interpreta le seguenti opzioni:

       -c stringa
                 Se è presente l'opzione -c, allora i comandi sono letti da stringa.  Se vi sono argomenti  dopo
                 la stringa, essi sono assegnati ai parametri posizionali, partendo da $0.
       -i        Se è presente l'opzione -i, la shell è interattiva.
       -l        fa  sì  che  bash  funzioni  come  se  fosse  stata  invocata  come una shell di login (si veda
                 INVOCAZIONE più avanti).
       -r        Se l'opzione -r è presente, la shell diventa ristretta (si veda SHELL RISTRETTA più avanti)
       -s        Se è presente l'opzione -s, o se non rimane alcun argomento dopo che sono  state  esaminate  le
                 opzioni,  i  comandi  sono  letti  dallo standard input.  Quest'opzione permette di impostare i
                 parametri posizionali quando si invoca una shell interattiva.
       -D        Una lista di tutte le stringhe fra virgolette preceduta da $ è stampata sullo standard  output.
                 Queste  sono  le stringhe che sono soggette a traduzione di linguaggio quando la localizzazione
                 corrente non è C o POSIX.  Questo implica l'opzione -n; nessun comando verrà eseguito.
       [-+]O [shopt_option]
                 shopt_option è una delle opzioni di shell accettate dal  comando  incorporato  shopt  (si  veda
                 COMANDI  INCORPORATI DELLA SHELL più avanti).  Se shopt_option è presente, -O imposta il valore
                 di quella opzione; +O lo rimuove.  Se shopt_option non è fornita,  i  nomi  e  i  valori  delle
                 opzioni  della  shell  accettati da shopt sono stampati sullo standard output.  Se l'opzione di
                 invocazione è +O, l'output è mostrato in un formato riutilizzabile come input.
       --        Un -- segna la fine delle opzioni  e  disabilita  l'ulteriore  elaborazione  di  opzioni.   Gli
                 argomenti  dopo  il  --  sono  trattati  come  nomi  di  file e argomenti.  Un argomento di - è
                 equivalente a --.

       Bash interpreta anche un certo numero di opzioni multicarattere.  Queste opzioni  devono  apparire  nella
       riga di comando prima delle opzioni a carattere singolo.

       --debugger
              Dispone l'esecuzione del debugger profile prima dell'avvio della shell.  Attiva la modalità estesa
              di debug (si veda la descrizione dell'opzione extdebug al comando incorporato shopt più avanti).
       --dump-po-strings
              Equivalente a -D, ma l'output è nel formato file GNU gettext po (portable object).
       --dump-strings
              Equivalente a -D.
       --help Mostra sullo standard output un messaggio sull'uso ed esce con stato di uscita 0.
       --init-file file
       --rcfile file
              Esegue comandi letti da file invece che dal file personale di inizializzazione standard  ~/.bashrc
              se la shell è interattiva (si veda INVOCAZIONE più avanti).

       --login
              Equivalente a -l

       --noediting
              Non usa la libreria GNU readline per leggere righe di comando quando la shell è interattiva.

       --noprofile
              Non  legge  né  il  file  di  inizializzazione generico di sistema /etc/profile né alcuno dei file
              personali di inizializzazione ~/.bash_profile,  ~/.bash_login,  o  ~/.profile.   Per  impostazione
              predefinita  bash legge questi file quando è invocata come shell di login (si veda INVOCAZIONE più
              avanti).

       --norc Non legge né esegue il file personale di inizializzazione ~/.bashrc se  la  shell  è  interattiva.
              Questa opzione è attiva per impostazione predefinita se la shell è invocata come sh.

       --posix
              Cambia il comportamento di bash, dove le operazioni predefinite differiscono dallo standard POSIX,
              in modo da corrispondere allo standard (modalità posix).

       --restricted
              La  shell diventa ristretta (si veda SHELL RISTRETTA più avanti).

       --verbose
              Equivalente a  -v.

       --version
              Mostra informazioni sulla versione di questa istanza di bash sullo standard  output  ed  esce  con
              stato d'uscita 0.

ARGOMENTI

       Se  rimangono  argomenti dopo che sono state elaborate le opzioni, e né l'opzione -c né l'opzione -s sono
       state specificate, il primo argomento si assume sia il nome di un file che contiene dei comandi di shell.
       Se  bash  è  invocata  in  questo  modo,  $0 è impostato al nome del file, e i parametri posizionali sono
       impostati agli argomenti che lo seguono.  Bash legge ed esegue comandi da  questo  file,  poi  esce.   Lo
       stato  d'uscita di Bash è lo stato d'uscita dell'ultimo comando eseguito nello script.  Se non è eseguito
       alcun comando lo stato d'uscita è 0.  Viene fatto un primo tentativo per aprire il file  nella  directory
       corrente, e se non viene trovato il file la shell cerca le directory in PATH per lo script.

INVOCAZIONE

       Una  shell  di  login  è quella in cui il cui primo carattere dell'argomento zero è un -, o una che venga
       avviata con l'opzione --login.

       Una shell è detta interattiva se è stata avviata senza argomenti diversi dalle opzioni e senza  l'opzione
       -c  i  cui  standard  input  e  standard  error  sono  entrambi  inviati a terminali (come determinato da
       isatty(3)), o se viene avviata con l'opzione -i.  PS1 è impostato e $- include i se bash  è  interattiva,
       permettendo a uno script di shell o a un file di inizializzazione di verificare questo stato.

       I  seguenti  paragrafi descrivono come bash esegue i suoi file di inizializzazione.  Se qualcuno dei file
       esiste ma non può essere letto bash riporta un errore.  Le tilde sono  espanse  nei  nomi  di  file  come
       descritto più avanti sotto Espansione della tilde nella sezione ESPANSIONE.

       Quando  bash  è  invocata  come  una  shell  di  login  interattiva, o come una shell non interattiva con
       l'opzione  --login, prima legge ed esegue comandi dal file /etc/profile, se quel file esiste.  Dopo  aver
       letto  quel  file, cerca ~/.bash_profile, ~/.bash_login, e ~/.profile, in quest'ordine, e legge ed esegue
       comandi dal primo file che trova e che è leggibile.  L'opzione --noprofile può  essere  usata  quando  si
       avvia la shell per inibire questo comportamento.

       Quando una shell di login esce, bash legge ed esegue comandi dal file ~/.bash_logout, se esiste.

       Quando  una  shell  interattiva  che  non è una shell di login è avviata, bash legge ed esegue comandi da
       ~/.bashrc, se quel file esiste.  Ciò può essere inibito utilizzando l'opzione --norc.  L'opzione --rcfile
       file forza bash a leggere ed eseguire comandi da file invece che da ~/.bashrc.

       Quando  bash  è  avviata in modo non interattivo, per eseguire uno script di shell, per esempio, cerca la
       variabile di ambiente BASH_ENV, espande il suo valore se questo esiste, e utilizza il valore espanso come
       il  nome  di  un file da leggere ed eseguire.  Bash si comporta come se fossero stati eseguiti i seguenti
       comandi:
              if [ -n "$BASH_ENV" ]; then . "$BASH_ENV"; fi
       ma il valore della variabile PATH non è usato per cercare il nome del file.

       Se bash è invocata col nome sh, tenta di imitare  il  comportamento  di  inizializzazione  delle  vecchie
       versioni  di sh il più fedelmente possibile, e allo stesso tempo si conforma allo standard POSIX.  Quando
       invocata come una shell di login interattiva, o una shell interattiva con l'opzione  --login,  per  prima
       cosa  tenta  di  leggere  ed eseguire i comandi da /etc/profile e ~/.profile, in quest'ordine.  L'opzione
       --noprofile può  essere  usata  per  inibire  questo  comportamento.   Quando  invocata  come  una  shell
       interattiva  col  nome sh, bash cerca la variabile ENV, espande il suo valore se questo è definito, e usa
       il valore espanso come nome di un file da leggere ed eseguire.  Poiché una shell  invocata  come  sh  non
       tenta  di leggere ed eseguire comandi da qualsiasi altro file di inizializzazione, l'opzione --rcfile non
       ha alcun effetto.  Una shell non interattiva invocata col nome sh non tenta di leggere nessun altro  file
       di  inizializzazione.   Quando  invocata  come  sh,  bash  lavora  in  modalità  posix dopo che i file di
       inizializzazione sono stati letti.

       Quando bash è avviata in modalità posix come con l'opzione --posix della riga di comando, essa  segue  lo
       standard  POSIX  per  i  file  di  inizializzazione.   In questa modalità la shell interattiva espande la
       variabile ENV e i comandi sono letti ed eseguiti dal file il cui nome è il valore espanso.  Nessun  altro
       file di inizializzazione viene letto.

       Bash cerca di determinare quando la si sta eseguendo col suo standard input connesso a una connessione di
       rete, come quando è eseguita dal demone di shell remota, solitamente rshd, o dal demone di  shell  sicura
       sshd.   Se  bash  stabilisce che è eseguita in questo modo, legge ed esegue comandi da ~/.bashrc, se quel
       file esiste ed è leggibile.  Non fa questo se è invocata come sh.  L'opzione --norc può essere usata  per
       inibire  questo  comportamento,  e l'opzione --rcfile può essere usata per forzare la lettura di un altro
       file, ma rshd solitamente non invoca la shell con queste opzioni o non permette che siano specificate.

       Se la shell è avviata con l'id  effettivo  dell'utente  (gruppo)  non  uguale  all'id  reale  dell'utente
       (gruppo),  e  non viene fornita l'opzione -p, nessun file di inizializzazione viene letto, le funzioni di
       shell non vengono ereditate dall'ambiente, le variabili SHELLOPTS, BASHOPTS,  CDPATH,  e  GLOBIGNORE,  se
       esistono  nell'ambiente,  vengono  ignorate,  e  l'id  effettivo  dell'utente  è  impostato  all'id reale
       dell'utente.  Se l'opzione -p è fornita all'invocazione, il comportamento all'avvio  è  il  medesimo,  ma
       l'id effettivo dell'utente non viene reimpostato.

DEFINIZIONI

       Le seguenti definizioni sono usate nel resto di questo documento.
       blank  Uno spazio o carattere di tabulazione (tab).
       parola Una sequenza di caratteri considerata come una singola unità dalla shell.  Nota anche come token.
       nome   Una  parola  che  consiste solo di caratteri alfanumerici e trattini di sottolineatura, e comincia
              con un carattere alfabetico o un trattino di sottolineatura.  Definita anche un identificatore.
       metacarattere
              Un carattere che, quando non quotato, separa le parole.  Uno dei seguenti:
              |  & ; ( ) < > spazio tab
       operatore di controllo
              Un token che realizza una funzione di controllo.  È uno dei seguenti simboli:
              || & && ; ;; ( ) | |& <newline>

PAROLE RISERVATE

       Le parole riservate sono parole che hanno un significato speciale per la shell.  Le seguenti parole  sono
       riconosciute  come  riservate quando non quotate e sono o la prima parola di un comando semplice (si veda
       GRAMMATICA DELLA SHELL più avanti) o la terza parola di un comando case o di un comando for:

       ! case  do done elif else esac fi for function if in select then until while { } time [[ ]]

GRAMMATICA DELLA SHELL

   Comandi semplici
       Un comando semplice è una sequenza opzionale di assegnamenti di variabile seguita da parole, separate  da
       blank, e ridirezioni, e terminata da un operatore di controllo.  La prima parola specifica il comando che
       deve essere eseguito, ed è passata come argomento zero.  Le rimanenti parole sono passate come  argomenti
       al comando invocato.

       Il  valore  di  ritorno  di  un  comando semplice è il suo stato di uscita, o 128+n se il comando è fatto
       terminare da un segnale n.

   Pipeline
       Una pipeline è una sequenza di uno o più comandi separati da uno degli operatori di controllo | o |&.  Il
       formato per una pipeline è:

              [time [-p]] [ ! ] comando [ [||&] comando2 ... ]

       Lo  standard  output  di  comando è connesso attraverso una pipe allo standard input di comando2.  Questa
       connessione è effettuata prima di qualsiasi ridirezione specificata dal comando (si veda RIDIREZIONE  più
       avanti).   Se  viene  usato  |&,  lo standard error di comando è connesso allo standard input di comando2
       tramite la pipe; è una notazione breve per 2>&1 |.  Questa ridirezione implicita dello standard  error  è
       effettuata dopo qualsiasi ridirezione specificata dal comando.

       Lo  stato  di  ritorno  di  una  pipeline  è  lo stato d'uscita dell'ultimo comando, a meno che l'opzione
       pipefail non sia abilitata.  Se pipefail è abilitata, lo stato di ritorno  della  pipeline  è  il  valore
       dell'ultimo  comando  (il  più a destra) che esce con uno stato diverso da zero o zero se tutti i comandi
       escono con successo.  Se la parola riservata !   precede  una  pipeline,  lo  stato  d'uscita  di  quella
       pipeline  è  la negazione logica dello stato d'uscita come sopra descritto.  La shell aspetta che tutti i
       comandi nella pipeline terminino prima di ritornare un valore.

       Se la parola riservata time precede una pipeline, quando la pipeline termina vengono notificati  i  tempi
       impiegati  dall'utente e dal sistema per la sua esecuzione.  L'opzione -p cambia il formato di output con
       quello specificato da POSIX.  Quando la shell è in modalità posix, non riconosce  time  come  una  parola
       riservata  se  il token successivo inizia con un `-'.  La variabile TIMEFORMAT può essere impostata a una
       stringa di formato che specifica come le informazioni sui tempi dovranno  essere  mostrate;  si  veda  la
       descrizione di TIMEFORMAT sotto Variabili di shell più avanti.

       Quando  la  shell  è  in  modalità posix, time può essere seguito da un newline.  In questo caso la shell
       visualizza il tempo totale dell'utente e del sistema utilizzato dalla shell e dai  suoi  figli.   Si  può
       usare la variabile TIMEFORMAT per specificare il formato dell'informazione sul tempo.

       Ogni comando in una pipeline è eseguito come un processo separato (cioè in una subshell).

   Liste
       Una  lista  è  una  sequenza  di  una  o  più  pipeline separate da uno degli operatori ;, &, &&, o ||, e
       facoltativamente fatta terminare da uno fra ;, &, o <newline>.

       Di questi operatori di lista, && e || hanno uguale precedenza,  seguiti  da  ;  e  &,  che  hanno  uguale
       precedenza.

       Per delimitare dei comandi può essere usata in una lista una sequenza di uno o più newline al posto di un
       punto e virgola.

       Se un comando è terminato dall'operatore di controllo &, la shell esegue il comando in background in  una
       subshell.  La shell non aspetta che il comando finisca, e lo stato di ritorno è 0.  I comandi separati da
       un ; sono eseguiti sequenzialmente; la shell aspetta che ogni comando, in sequenza, termini.  Lo stato di
       ritorno è lo stato d'uscita dell'ultimo comando eseguito.

       Le  liste  AND  e  OR  sono  sequenze di una o più pipeline separate, rispettivamente, dagli operatori di
       controllo && e ||.  Le liste AND e OR vengono eseguite con associatività a sinistra.  Una lista AND ha la
       forma

              comando1 && comando2

       comando2 è eseguito se, e solo se, comando1 ritorna uno stato d'uscita di zero.

       Una lista OR ha la forma

              comando1 || comando2

       comando2  è  eseguito  se  e  solo  se  comando1 ritorna uno stato d'uscita diverso da zero.  Lo stato di
       ritorno di liste AND e OR è lo stato d'uscita dell'ultimo comando eseguito nella lista.

   Comandi composti
       Un comando composto è uno dei seguenti:

       (lista)
              lista è eseguita in un ambiente di subshell (si  veda  AMBIENTE  DI  ESECUZIONE  DEI  COMANDI  più
              avanti).   Assegnamenti  di variabile e comandi incorporati che influenzano l'ambiente della shell
              non hanno effetto dopo che il comando è completato.  Lo stato di ritorno è lo  stato  d'uscita  di
              lista.

       { lista; }
              lista è semplicemente eseguita nell'ambiente di shell corrente.  lista deve essere fatta terminare
              con un newline o un punto e virgola.  Questo è conosciuto come group command.  Lo stato di ritorno
              è  lo  stato  d'uscita  di  lista.  Da notare che diversamente dai metacaratteri ( e ), { e } sono
              parole riservate e devono essere usati quando una parola riservata è ammissibile.  Poiché esse non
              causano  una  divisione  delle  parole,  devono essere separate da lista con uno spazio o un altro
              metacarattere di shell.

       ((espressione))
              L'espressione è valutata  in  accordo  con  le  regole  descritte  più  avanti  sotto  VALUTAZIONE
              ARITMETICA.   Se il valore dell'espressione è diverso da zero, lo stato di ritorno è 0; altrimenti
              lo stato di ritorno è 1.  Questo è esattamente equivalente a let "espressione".

       [[ espressione ]]
              Ritorna uno stato di 0 o 1 a seconda della valutazione della espressione condizionale espressione.
              Le  espressioni sono composte dalle primitive descritte più avanti sotto ESPRESSIONI CONDIZIONALI.
              La suddivisione in parole e l'espansione del nome di percorso non sono effettuate sulle parole fra
              la [[ e ]]; espansione della tilde, espansione di parametro e di variabile, espansione aritmetica,
              sostituzione di comando, sostituzione di processo, e rimozione degli apici vengono eseguite.   Gli
              operatori condizionali come -f devono essere senza apici per essere riconosciuti come primitive.

              Quando  vengono  usati  con [[, gli operatori < e > vengono ordinati lessicograficamente usando la
              localizzazione corrente.

              Quando vengono usati gli operatori == e !=, la stringa alla destra dell'operatore è considerato un
              modello  ed  è confrontata in accordo con le regole descritte più avanti sotto Modelli di ricerca.
              Se l'opzione di shell nocasematch è abilitata, il confronto è  effettuato  senza  distinzione  fra
              maiuscole  e  minuscole  nei  caratteri  alfabetici.   Il  valore  di  ritorno  è  0 se la stringa
              corrisponde (==) o non corrisponde (!=) al modello, e 1 negli altri casi.  Ogni parte del  modello
              può essere quotato per forzarlo a essere individuato come una stringa.

              Un  ulteriore  operatore  binario,  =~, è disponibile con la stessa precedenza di == e !=.  Quando
              viene usato, la stringa alla destra dell'operatore è considerata un'espressione regolare estesa  e
              confrontata  come  tale (come in regex(3)).  Il valore di ritorno è 0 se la stringa corrisponde al
              modello, e 1 negli altri casi.  Se l'espressione regolare è sintatticamente scorretta,  il  valore
              di  ritorno  dell'espressione condizionale è 2.  Se l'opzione di shell nocasematch è abilitata, il
              confronto è effettuato senza distinguere le maiuscole dalle minuscole  nei  caratteri  alfabetici.
              Qualsiasi parte del modello può essere quotato per forzarlo a essere individuato come una stringa.
              Substringhe individuate tramite subespressioni fra parentesi all'interno dell'espressione regolare
              sono  salvate  nella  variabile  array BASH_REMATCH.  L'elemento di BASH_REMATCH con indice 0 è la
              porzione della stringa corrispondente all'intera espressione regolare.  L'elemento di BASH_REMATCH
              con indice n è la porzione della stringa corrispondente alla sotto-espressione fra parentesi nth.

              Le espressioni possono essere combinate usando i seguenti operatori, elencati in ordine inverso di
              precedenza:

              ( espressione )
                     Ritorna il valore di espressione.  Questo  può  essere  usato  per  modificare  la  normale
                     precedenza degli operatori.
              ! espressione
                     Vero se espressione è falsa.
              espressione1 && espressione2
                     Vero se entrambe espressione1 e espressione2 sono vere.
              espressione1 || espressione2
                     Vero se almeno una fra espressione1 o espressione2 è vera.

              Gli  operatori  &&  e  || non valutano espressione2 se il valore di espressione1 è sufficiente per
              determinare il valore di ritorno dell'intera espressione condizionale.

       for nome [ [ in [ parola ... ] ] ; ] do lista ; done
              La lista di parole che seguono in è espansa, generando una lista di elementi.  La variabile nome è
              impostata,  di  volta  in volta, a ciascun elemento di questa lista e lista è eseguita ogni volta.
              Se la in parola è omessa, il comando for esegue lista una volta  per  ogni  parametro  posizionale
              esistente  (si  veda  PARAMETRI  più avanti).  Lo stato di ritorno è lo stato d'uscita dell'ultimo
              comando eseguito.  Se l'espansione degli elementi che seguono in risultano in una lista vuota, non
              è eseguito alcun comando, e lo stato di ritorno è 0.

       for (( expr1 ; expr2 ; expr3 )) ; do lista ; done
              Prima  viene valutata l'espressione aritmetica expr1 in accordo con le regole descritte più avanti
              sotto VALUTAZIONE ARITMETICA.  Viene quindi valutata ripetutamente l'espressione aritmetica  expr2
              finché  non assume il valore zero.  Ogni volta che expr2 è diverso da zero, lista viene eseguita e
              l'espressione aritmetica expr3 viene valutata.  Se qualche espressione è omessa,  si  suppone  che
              abbia  il  valore  1.  Il valore di ritorno è lo stato d'uscita dell'ultimo comando in lista che è
              eseguito, o falso se una qualsiasi delle espressioni non è valida.

       select nome [ in parola; ] do lista ; done
              La lista di parole che segue in è espansa, generando  una  lista  di  elementi.   L'insieme  delle
              parole  espanse è stampato sullo standard error, ognuna preceduta da un numero.  Se la in parola è
              omessa, sono stampati i parametri posizionali (si veda PARAMETRI più avanti). È  poi  mostrato  il
              prompt  PS3  ed  è  letta una riga dallo standard input.  Se la riga è contrassegnata da un numero
              corrispondente a una delle parole mostrate, allora il valore di nome è impostato a quella  parola.
              Se  la riga è vuota, le parole e il prompt sono mostrati di nuovo.  Se viene immesso EOF [CTRL-D],
              il comando termina.  Qualsiasi altro valore letto fa sì che nome sia impostato  al  valore  nullo.
              La riga letta è salvata nella variabile REPLY.  La lista è eseguita dopo ciascuna selezione fino a
              che non sia eseguito un  comando  break.   Lo  stato  d'uscita  di  select  è  lo  stato  d'uscita
              dell'ultimo comando eseguito in lista, o zero se nessun comando è stato eseguito.

       case parola in [ [(] modello [ | modello ] ... ) lista ;; ] ... esac
              Un  comando  case  prima espande parola, e prova a confrontarla, di volta in volta, con ognuno dei
              modelli, usando le stesse regole di confronto dell'espansione di percorso (si veda  Espansione  di
              percorso  più avanti).  La parola è espansa usando espansione della tilde, espansione di parametro
              e di variabile, sostituzione aritmetica, sostituzione  di  comando,  sostituzione  di  processo  e
              rimozione  dei  simboli  di  quotatura.   Ogni modello esaminato è espanso usando espansione della
              tilde, espansione di parametro e di variabile, sostituzione aritmetica, sostituzione di comando  e
              sostituzione  di  processo.   Se  l'opzione  di  shell  nocasematch  è  abilitata,  il confronto è
              effettuato senza distinzione fra maiuscole e minuscole nei  caratteri  alfabetici.   Quando  viene
              trovata  una  corrispondenza, viene eseguita la lista a essa abbinata.  Se viene usato l'operatore
              ;;, dopo il primo confronto riuscito non ne viene tentato nessun altro.  Usando ;& al posto di  ;;
              l'esecuzione  continua  con la lista associata alla successiva serie di modelli.  Se si usa ;;& al
              posto di ;; la shell analizza il successivo modello di lista nell'istruzione, se ce n'è  qualcuno,
              ed esegue qualsiasi lista associata su una corrispondenza andata a buon fine.  Lo stato d'uscita è
              0 se nessun modello corrisponde.   Altrimenti,  esso  è  lo  stato  d'uscita  dell'ultimo  comando
              eseguito in lista.

       if lista then lista [ elif lista then lista ] ... [ else lista ] fi
              La lista if è eseguita.  Se il suo stato d'uscita è 0, è eseguita la lista dopo then.  Altrimenti,
              è eseguita a turno ciascuna lista dopo elif, e se il  suo  stato  d'uscita  è  0,  è  eseguita  la
              corrispondente  lista  dopo  then  e  il comando termina.  Altrimenti, se presente, è eseguita, la
              lista dopo else.  Lo stato d'uscita è lo stato d'uscita dell'ultimo comando eseguito,  o  zero  se
              nessuna delle condizioni considerate è risultata essere vera.

       while lista-1; do lista-2; done
       until lista-1 do lista-2 done
              Il comando while esegue ripetutamente la lista lista-2 finché l'ultimo comando nella lista lista-1
              ritorna uno stato di uscita di zero.  Il comando until è identico al comando while,  con  la  sola
              differenza  che  il  risultato  del  test  è negato; lista-2 è eseguita finché l'ultimo comando in
              lista-1 ritorna uno stato d'uscita diverso da zero.  Lo stato d'uscita dei comandi while e until è
              lo  stato  d'uscita  dell'ultimo  comando  eseguito  in lista-2, o zero se non ne è stato eseguito
              alcuno.

   Coprocessi
       Un coprocesso è un comando di shell  preceduto  dalla  parola  riservata  coproc.   Un  coprocesso  viene
       eseguito  in  modo asincrono in una subshell, come se il comando fosse stato terminato con l'operatore di
       controllo &, con una pipe a due vie stabilita fra la shell in esecuzione e il coprocesso.

       Il formato per un coprocesso è:

              coproc [NOME] comando [ridirezioni]

       Questo crea un coprocesso chiamato NOME.  Se NOME non viene fornito, quello predefinito è  COPROC.   NOME
       non  dev'essere  fornito  se comando è un comando semplice (si veda sopra); altrimenti viene interpretato
       come la prima parola di un comando semplice.  Quando il coprocesso viene  eseguito,  la  shell  crea  una
       variabile  array  (si  veda  Array  più avanti) chiamata NOME nel contesto della shell in esecuzione.  Lo
       standard output di comando è connesso  tramite  una  pipe  a  un  descrittore  di  file  nella  shell  in
       esecuzione,  e  il  descrittore  di  file è assegnato a NOME[0].  Lo standard input of comando è connesso
       tramite una pipe a un descrittore di file nella shell in esecuzione, e tale  descrittore  è  assegnato  a
       NOME[1].  Questa pipe è costituita prima che qualsiasi ridirezione venga specificata dal comando (si veda
       RIDIREZIONE più avanti).  I descrittori di file possono essere utilizzati come argomenti per i comandi di
       shell  e ridirezioni usando comuni espansioni di parola.  L'ID del processo della shell figlia creata per
       eseguire il coprocesso è disponibile come valore della variabile NOME_PID.  Il comando  incorporato  wait
       può essere usato per attendere che il coprocesso sia terminato.

       Lo stato di ritorno di un coprocesso è lo stato di uscita di comando.

   Definizioni della funzione di shell
       Una  funzione  di  shell  è  un  oggetto che viene chiamato come un comando semplice ed esegue un comando
       composto con una nuova serie di parametri posizionali.  Le funzioni di shell sono  dichiarate  in  questo
       modo:

       nome () comando-composto [ridirezione]
       function nome [()] comando-composto [ridirezione]
              Qui  sopra si definisce una funzione chiamata nome.  La parola riservata function è opzionale.  Se
              la parola riservata function è fornita, le parentesi sono opzionali.  Il corpo della funzione è il
              comando  composto  comando-composto (si veda Comandi composti sopra).  Questo comando è usualmente
              una lista di comandi fra { e }, ma potrebbe essere qualsiasi comando elencato in precedenza, sotto
              Comandi  composti.   comando-composto è eseguito ogni volta che nome è specificato come nome di un
              comando semplice.  Ogni ridirezione (si  veda  RIDIREZIONE  più  avanti)  specificata  quando  una
              funzione  è definita viene effettuata quando quella funzione viene eseguita.  Lo stato d'uscita di
              una definizione di funzione è 0 tranne quando si verifica un errore di sintassi o una funzione  in
              sola  lettura  con  lo  stesso  nome  è  già esistente.  Quando eseguita, lo stato d'uscita di una
              funzione è lo stato d'uscita dell'ultimo  comando  eseguito  nel  corpo.  (Si  veda  FUNZIONI  più
              avanti).

COMMENTI

       In  una  shell  non  interattiva,  o  in  una shell interattiva in cui l'opzione interactive_comments del
       comando incorporato shopt è abilitata (si veda COMANDI INCORPORATI DELLA SHELL più  avanti),  una  parola
       che  inizia  con  # fa sì che la parola e tutti i rimanenti caratteri di quella riga siano ignorati.  Una
       shell interattiva senza l'opzione interactive_comments abilitata  non  permette  i  commenti.   L'opzione
       interactive_comments è attiva in modo predefinito nelle shell interattive.

QUOTATURA

       La Quotatura è usata per togliere il significato speciale, per la shell, di certi caratteri o parole.  La
       quotatura può essere usata per disabilitare  il  trattamento  speciale  per  i  caratteri  speciali,  per
       impedire che le parole riservate siano riconosciute come tali, e per prevenire l'espansione di parametro.

       Ciascuno  dei  metacaratteri  elencati  prima sotto DEFINIZIONI ha un significato speciale per la shell e
       deve essere quotato se esso deve rappresentare se stesso.

       Quando vengono usati i servizi per l'espansione della cronologia dei comandi (si  veda  ESPANSIONE  DELLA
       CRONOLOGIA  più avanti), il carattere di espansione della cronologia, in genere !, dev'essere quotato per
       prevenire l'espansione della cronologia.

       Vi sono tre meccanismi di quotatura: caratteri di protezione (escape), apostrofi e virgolette.

       Una barra inversa (\) non quotata è il carattere di protezione.  Esso attribuisce il valore letterale  al
       successivo  carattere,  con l'eccezione di <newline>.  Se vi è una coppia \<newline> , e la barra inversa
       non è quotata, il \<newline> è trattato come una continuazione di riga (cioè, è  rimosso  dal  flusso  di
       input e viene realmente ignorato).

       Racchiudendo  dei  caratteri  in  apostrofi si conserva il valore letterale di ogni carattere all'interno
       degli apostrofi.  Un apostrofo non può essere inserito tra apostrofi,  nemmeno  preceduto  da  una  barra
       inversa.

       Racchiudere  caratteri  tra virgolette conserva il valore letterale di tutti i caratteri all'interno, con
       le eccezioni di $, `, \, e, quando l'espansione della cronologia è abilitata,  !.   I  caratteri  $  e  `
       conservano  il  loro  significato  speciale  anche  tra  virgolette.   La  barra  inversa mantiene il suo
       significato speciale solo quando seguito da uno dei seguenti caratteri: $, `,  ",  \,  o  <newline>.   Le
       virgolette  possono  essere  contenute  in  una  stringa  fra virgolette facendole precedere da una barra
       inversa.  Se abilitata, l'espansione della cronologia viene effettuata a meno che un  !   tra  virgolette
       non venga protetto da una barra inversa.  La barra inversa che precede il !  non viene rimossa.

       I  parametri  speciali  * e @ hanno un significato speciale quando sono tra virgolette (si veda PARAMETRI
       più avanti).

       Parole della forma $'stringa' sono trattate  in  modo  speciale.   La  parola  espande  in  stringa,  coi
       caratteri  protetti  da una barra inversa sostituiti come specificato dallo standard ANSI C.  Le sequenze
       di protezione tramite la barra inversa, se presenti, sono decodificate come segue:
              \a     avviso (segnale acustico)
              \b     backspace
              \e
              \E     un carattere di escape
              \f     salto pagina
              \n     codice di fine riga (newline)
              \r     carriage return
              \t     tabulazione orizzontale
              \v     tabulazione verticale
              \\     barra inversa
              \'     apostrofo
              \"     virgolette
              \nnn   il carattere a otto bit il cui valore è il valore ottale nnn (da una a tre cifre)
              \xHH   il carattere a otto bit il cui  valore  è  il  valore  esadecimale  HH  (una  o  due  cifre
                     esadecimali)
              \uHHHH il  carattere  Unicode (ISO/IEC 10646) il cui valore è il valore esadecimale HHHH (da una a
                     quattro cifre esadecimali)
              \UHHHHHHHH
                     il carattere Unicode (ISO/IEC 10646) il cui valore è il valore esadecimale HHHHHHHH (da una
                     a otto cifre esadecimali)
              \cx    un carattere control-x

       Il risultato espanso è racchiuso fra apostrofi come se il segno del dollaro non fosse presente.

       Una stringa fra virgolette preceduta dal segno del dollaro ($"stringa") causa la traduzione della stringa
       conformemente alla localizzazione corrente.  Se la localizzazione corrente è C  o  POSIX,  il  segno  del
       dollaro viene ignorato.  Se la stringa è tradotta e sostituita, la sostituzione è fra virgolette.

PARAMETRI

       Un  parametro  è  una  entità  che  contiene  valori.   Può essere un nome, un numero o uno dei caratteri
       speciali elencati più avanti sotto Parametri speciali.  Una variabile è un parametro indicato da un nome.
       Una  variabile  ha un valore e zero o più attributi.  Gli attributi sono assegnati utilizzando il comando
       incorporato declare (si veda declare più avanti in COMANDI INCORPORATI DELLA SHELL).

       Un parametro è impostato se a esso è stato assegnato un valore.  La stringa nulla  è  un  valore  valido.
       Una volta che una variabile è impostata, essa può essere rimossa solo usando il comando incorporato unset
       (si veda COMANDI INCORPORATI DELLA SHELL più avanti).

       Una variabile può essere assegnata da una istruzione della forma

              nome=[valore]

       Se valore è omesso, alla variabile è assegnata la stringa  nulla.   Tutti  i  valori  sono  sottoposti  a
       espansione  della  tilde,  espansione  di  parametro  e  variabile,  sostituzione  di comando, espansione
       aritmetica e rimozione dei caratteri di quotatura (si veda ESPANSIONE più avanti).  Se la variabile ha il
       suo  attributo  integer  impostato,  allora  valore  è  valutato  come un'espressione aritmetica anche se
       l'espansione del $((...)) non è utilizzata (si veda Espansione aritmetica più avanti).   La  suddivisione
       in  parole  non  è effettuata, con l'eccezione di "$@" come spiegato più avanti sotto Parametri speciali.
       L'espansione di percorso non è effettuata.  Le istruzioni di assegnamento  possono  anche  apparire  come
       argomenti per i comandi incorporati alias, declare, typeset, export, readonly e local.

       Nel  contesto  in cui un'istruzione di assegnamento sta assegnando un valore a una variabile di shell o a
       un indice di array, l'operatore += può essere usato per accodare o aggiungere al precedente valore  della
       variabile.   Quando  +=  è  applicato a una variabile per la quale l'attributo integer è stato impostato,
       valore è valutato come un'espressione aritmetica e aggiunto al valore corrente della variabile, che  è  a
       sua  volta  valutata.   Quando += è applicato a una variabile array usando assegnamenti composti (si veda
       Array più avanti), il valore della variabile non è rimosso (com'è quando si usa =), e nuovi  valori  sono
       aggiunti  alla  fine  dell'array  iniziando  dal  massimo  indice  di  array  aumentato di uno (per array
       indicizzati) o aggiunti come coppie supplementari di  valore-chiave  in  un  array  associativo.   Quando
       applicata a una variabile valutata come stringa, valore è espanso e accodato al valore della variabile.

   Parametri posizionali
       Un  parametro posizionale è un parametro il cui nome è indicato da una o più cifre, diverse dalla singola
       cifra 0.  I parametri posizionali sono assegnati dagli argomenti della shell quando questa è invocata,  e
       possono essere riassegnati usando il comando incorporato set.  I parametri posizionali non possono essere
       assegnati con istruzioni di assegnamento.  I parametri posizionali sono temporaneamente sostituiti quando
       è eseguita una funzione di shell (si veda FUNZIONI più avanti).

       Quando  si espande un parametro posizionale composto da più di una sola cifra, esso deve essere racchiuso
       tra parentesi graffe (si veda ESPANSIONE più avanti).

   Parametri speciali
       La shell tratta molti parametri in modo speciale.  Questi parametri possono solo essere referenziati;  la
       loro modifica non è permessa.
       *      Si  espande  nei  parametri  posizionali,  a  partire  dal primo.  Quando l'espansione avviene tra
              virgolette, si espande in una singola parola contenente il valore di  ciascun  parametro  separato
              dagli  altri  dal  primo  carattere  della  variabile  speciale IFS.  Cioè, ``$*'' è equivalente a
              ``$1c$2c...'', dove c è il  primo  carattere  del  valore  della  variabile  IFS.   Se  IFS  viene
              annullata, i parametri sono separati da spazi.  Se IFS è nulla, i parametri sono uniti senza alcun
              separatore.
       @      Si espande nei parametri posizionali, a  partire  dal  primo.   Quando  l'espansione  avviene  tra
              virgolette,  ogni  parametro  si  espande in una parola separata.  Cioè, "$@" è equivalente a "$1"
              "$2" ...  Se l'espansione fra virgolette avviene all'interno di una parola, l'espansione del primo
              parametro  è  unita  con  la  parte  iniziale  della  parola originale, e l'espansione dell'ultimo
              parametro è unita con la parte finale della parola originale.  Quando non  vi  è  alcun  parametro
              posizionale, "$@" e $@ si espandono come stringa nulla (cioè, sono rimossi).
       #      Si espande nel numero di parametri posizionali espresso come numero decimale.
       ?      Si  espande  nello  stato  di  uscita della pipeline eseguita più recentemente senza rilasciare il
              controllo del terminale.
       -      Si espande nei flag di opzione correnti come  specificato  in  base  alla  chiamata,  dal  comando
              incorporato set, o in quelli impostati dalla shell stessa (come l'opzione -i).
       $      Si  espande  nell'ID  di processo della shell.  In una subshell (), si espande nell'ID di processo
              della shell corrente, non in quello della subshell.
       !      Si espande nell'ID di processo del comando in background (asincrono) più recentemente eseguito.
       0      Si espande nel nome della shell o script di shell.  Questo è impostato alla inizializzazione della
              shell.  Se bash è chiamata con un file di comandi, $0 è impostato al nome di quel file.  Se bash è
              avviata con l'opzione -c, allora $0 è impostato al primo argomento dopo la stringa che deve essere
              eseguita,  se  presente.   Altrimenti,  è impostato al percorso usato per chiamare bash, come dato
              dall'argomento zero.
       _      All'avvio della shell, impostato al nome di percorso assoluto usato per invocare  la  shell  o  lo
              script  di  shell  che  è  eseguito  come  passato  nell'ambiente  o  nella  lista  di  argomenti.
              Successivamente, si espande nell'ultimo argomento del precedente comando,  dopo  l'espansione.   È
              anche  impostato  al  nome completo usato per invocare ogni comando eseguito e messo nell'ambiente
              esportato verso quel comando.  Mentre si controlla la posta, questo parametro contiene il nome del
              file del messaggio attualmente in esame.

   Variabili di shell
       Le seguenti variabili sono impostate dalla shell:

       BASH   Si espande al nome completo usato per chiamare questa istanza di bash.
       BASHOPTS
              Una  lista  di  opzioni di shell abilitate separate da un due punti.  Ogni parola della lista è un
              argomento valido per l'opzione -s del comando incorporato shopt (si veda COMANDI INCORPORATI DELLA
              SHELL  più  avanti).   Le  opzioni  che appaiono in BASHOPTS sono quelle contrassegnate come on da
              shopt.  Se questa variabile è nell'ambiente quando bash viene avviato, ogni opzione di shell nella
              lista  sarà  abilitata prima della lettura di qualsiasi file di avvio.  Questa variabile è di sola
              lettura.
       BASHPID
              Espande all'ID del processo dell'attuale bash.  In determinate circostanze, ciò differisce da  $$,
              come nel caso di subshell che non richiedono che bash sia reinizializzato.
       BASH_ALIASES
              Una  variabile  array  associativa  i  cui elementi corrispondono alla lista interna di alias come
              conservati dal comando incorporato alias.  Gli elementi aggiunti a  questo  array  appaiono  nella
              lista degli alias; togliendo elementi all'array, gli alias verranno rimossi dalla lista.
       BASH_ARGC
              Una  variabile  array  i  cui  valori sono il numero di parametri in ogni frame del corrente stack
              delle chiamate di esecuzione di bash.  Il numero di parametri della subroutine corrente  (funzione
              di  shell  o  script  eseguito  con  .  o source) è in cima allo stack.  Quando viene eseguita una
              subroutine, il numero di parametri passati  è  messo  in  cima  a  BASH_ARGC.   La  shell  imposta
              BASH_ARGC  solo  quando  è  in  modalità  estesa di debugging (si veda la descrizione dell'opzione
              extdebug per il comando incorporato shopt più avanti)
       BASH_ARGV
              Una variabile array contenente tutti i parametri nel corrente stack delle chiamate  di  esecuzione
              di  bash.   Il  parametro finale dell'ultima chiamata di subroutine è in cima allo stack; il primo
              parametro della chiamata iniziale è in fondo.  Quando una subroutine viene eseguita,  i  parametri
              forniti  sono  messi  in  cima  a BASH_ARGV.  La shell imposta BASH_ARGV solo quando è in modalità
              estesa di debugging (si veda la descrizione dell'opzione extdebug al comando incorporato shopt più
              avanti)
       BASH_CMDS
              Un  variabile  array associativa i cui elementi corrispondono alla tabella hash interna di comandi
              come memorizzati dal comando incorporato hash.  Gli elementi  aggiunti  a  questo  array  appaiono
              nella tabella hash; togliendo elementi all'array i comandi saranno rimossi dalla tabella hash.
       BASH_COMMAND
              Il  comando  attualmente  in  esecuzione o in procinto di essere eseguito, a meno che la shell non
              stia eseguendo un comando come risultato di un'intercettazione di segnale (trap), nel qual caso  è
              il comando in esecuzione al momento dell'intercettazione.
       BASH_EXECUTION_STRING
              L'argomento per il comando all'invocazione dell'opzione -c.
       BASH_LINENO
              Una  variabile  array  i cui elementi sono i numeri di riga nei file di origine dove ogni elemento
              corrispondente di FUNCNAME è stato chiamato.  ${BASH_LINENO[$i]} è il numero di riga nel  file  di
              origine  (${BASH_SOURCE[$i+1]})  dove  ${FUNCNAME[$i]} è stato chiamato (o ${BASH_LINENO[$i-1]} se
              referenziato all'interno di un'altra funzione di shell).  Usare LINENO per ottenere il  numero  di
              riga corrente.
       BASH_REMATCH
              Una  variabile  array  i  cui  elementi  sono  assegnati  dall'operatore  binario  =~  al  comando
              condizionale [[.  L'elemento con indice 0 è la porzione della stringa che  corrisponde  all'intera
              espressione  regolare.   L'elemento  con indice n è la porzione della stringa che corrisponde alla
              n-sima sott-espressione fra parentesi.  La variabile è in sola lettura.
       BASH_SOURCE
              Una variabile array i cui elementi  sono  i  nomi  dei  file  dove  sono  definiti  i  nomi  delle
              corrispondenti funzioni di shell nella variabile FUNCNAME.  La funzione di shell ${FUNCNAME[$i]} è
              definita nel file ${BASH_SOURCE[$i]} ed è chiamata da ${BASH_SOURCE[$i+1]}.
       BASH_SUBSHELL
              Incrementato di uno ogni volta che una subshell o un ambiente di subshell  è  stato  creato  dalla
              shell originale.  Il valore iniziale è 0.
       BASH_VERSINFO
              Una  variabile  array  in  sola  lettura  i  cui  elementi  danno  informazioni  sulla versione di
              quest'istanza di bash.  I valori assegnati ai membri dell'array sono come segue:
              BASH_VERSINFO[0]        Il numero di versione principale(la release).
              BASH_VERSINFO[1]        Il numero di versione secondario (la versione).
              BASH_VERSINFO[2]        Il livello di aggiornamento tramite patch.
              BASH_VERSINFO[3]        La versione di compilazione.
              BASH_VERSINFO[4]        Lo stato della release (ad es., beta1).
              BASH_VERSINFO[5]        Il valore di MACHTYPE.
       BASH_VERSION
              Si espande in una stringa che descrive la versione di questa istanza di bash.
       COMP_CWORD
              Un indice in ${COMP_WORDS} della parola contenente la  posizione  corrente  del  cursore.   Questa
              variabile  è  disponibile  solo  nelle  funzioni  di shell invocate dalle risorse di completamento
              programmabile (si veda Completamento programmabile più avanti).
       COMP_KEY
              Il tasto (o il tasto finale di una sequenza) usato  per  invocare  la  funzione  di  completamento
              corrente.
       COMP_LINE
              La  riga  di  comando corrente.  Questa variabile è disponibile solo nelle funzioni di shell e nei
              comandi esterni invocati  dai  servizi  di  completamento  programmabile  (si  veda  Completamento
              programmabile più avanti).
       COMP_POINT
              L'indice  della  posizione  corrente  del cursore relativa all'inizio del comando corrente.  Se la
              posizione corrente del cursore è alla fine del comando corrente, il valore di questa  variabile  è
              uguale  a  ${#COMP_LINE}.   Questa  variabile è disponibile solo nelle funzioni di shell e comandi
              esterni invocati dai servizi di completamento programmabile (si veda  Completamento  programmabile
              più avanti).
       COMP_TYPE
              Impostata  a  un  valore  intero corrispondente al tipo di completamento tentato che ha causato la
              chiamata di una funzione di completamento: TAB, per il completamento normale, ?, per l'elenco  dei
              completamenti  dopo  tabulazioni successive, !, per l'elenco delle alternative di completamento di
              una parte di parola, @, per elencare i completamenti se la parola non ha subito  modifiche,  o  %,
              per  il menù del completamento.  Questa variabile è disponibile solo nelle funzioni di shell e nei
              comandi esterni invocati  dai  servizi  di  completamento  programmabile  (si  veda  Completamento
              programmabile più avanti).
       COMP_WORDBREAKS
              L'insieme  dei caratteri che la libreria readline tratta come separatori di parola nell'effettuare
              il completamento di parola.  Se COMP_WORDBREAKS viene annullata, perde le sue proprietà  speciali,
              anche se è poi reimpostata.
       COMP_WORDS
              Una  variabile  array (si veda Array più avanti) che è composta dalle singole parole nella riga di
              comando corrente.  La riga è divisa in parole come readline la dividerebbe usando  COMP_WORDBREAKS
              come  descritto  precedentemente.   Questa  variabile è disponibile solo nelle funzioni di shell e
              comandi esterni  invocati  dai  servizi  di  completamento  programmabile  (si  veda  Programmable
              Completion più avanti).
       COPROC Una  variabile  array  (si  veda  Array  più avanti) creata per contenere i descrittori di file di
              uscita e di entrata di un coprocesso senza nome (si veda Coprocessi più avanti).
       DIRSTACK
              Una variabile array (si veda Array più avanti) che contiene  il  contenuto  corrente  dello  stack
              delle  directory.   Le directory appaiono nello stack nell'ordine in cui sono mostrate dal comando
              incorporato dirs.  L'assegnamento agli elementi di questa variabile array  può  essere  usato  per
              modificare le directory già nello stack, ma i comandi incorporati pushd e popd devono essere usati
              per aggiungere e rimuovere directory.  L'assegnamento a questa variabile non cambia  la  directory
              corrente.   Se  DIRSTACK  viene  annullata,  perde  le  sue  proprietà  speciali,  anche  se è poi
              reimpostata.
       EUID   Espande all'ID-utente effettivo dell'utente corrente, inizializzata all'avvio della shell.  Questa
              variabile è in sola lettura.
       FUNCNAME
              Una  variabile array contenente i nomi di tutte le funzioni di shell attualmente nello stack delle
              chiamate di esecuzione.  L'elemento con indice 0 è il nome della funzione di shell attualmente  in
              esecuzione.   L'elemento  più  in  basso di tutti (quello con l'indice più alto) è "main".  Questa
              variabile esiste solo quando è in esecuzione una funzione di shell.  Assegnamenti a  FUNCNAME  non
              hanno  alcun  effetto  e ritornano uno stato di errore.  Se FUNCNAME viene annullata, perde le sue
              proprietà speciali, anche se è poi reimpostata.

              Questa variabile può essere usata con BASH_LINENO e BASH_SOURCE.  Ogni  elemento  di  FUNCNAME  ha
              elementi  corrispondenti  in BASH_LINENO e BASH_SOURCE per descrivere lo stack delle chiamate. Per
              esempio, ${FUNCNAME[$i]} è  stato  chiamato  dal  file  ${BASH_SOURCE[$i+1]}  al  numero  di  riga
              ${BASH_LINENO[$i]}.   Il  comando  incorporato  caller visualizza lo stack delle chiamate corrente
              usando questa informazione.
       GROUPS Una variabile array  contenente  l'elenco  dei  gruppi  dei  quali  è  membro  l'utente  corrente.
              Assegnamenti  a  GROUPS  non hanno alcun effetto e ritornano uno stato di errore.  Se GROUPS viene
              annullata, perde le sue proprietà speciali, anche se è poi reimpostata.
       HISTCMD
              Il numero di cronologia, o indice nella lista della cronologia, del comando corrente.  Se  HISTCMD
              viene annullata, perde le sue proprietà speciali, anche se è poi reimpostata.
       HOSTNAME
              Automaticamente impostata al nome dell'host corrente.
       HOSTTYPE
              Automaticamente  impostata a una stringa che univocamente descrive il tipo di macchina su cui bash
              è in esecuzione.  Il valore predefinito è dipendente dal sistema.
       LINENO Ogni volta che questo parametro è referenziato, la  shell  gli  assegna  un  numero  decimale  che
              rappresenta  il numero di sequenza della riga corrente (partendo da 1) all'interno di uno script o
              funzione.  Quando non in uno script o funzione, non è  garantito  che  il  valore  restituito  sia
              significativo.   Se  LINENO  viene  annullata,  perde  le  sue  proprietà speciali, anche se è poi
              reimpostata.
       MACHTYPE
              Automaticamente impostata a una stringa che descrive completamente il tipo di  sistema  sul  quale
              bash  è  in  esecuzione,  nel  formato  standard  GNU cpu-company-system.  Il valore predefinito è
              dipendente dal sistema.
       MAPFILE
              Una variabile array (si veda Array più avanti) creata per contenere il  testo  letto  dal  comando
              incorporato mapfile quando non viene fornito un nome di variabile.
       OLDPWD La precedente directory di lavoro come impostata dal comando cd.
       OPTARG Il valore dell'ultimo argomento opzione elaborato dal comando incorporato getopts (si veda COMANDI
              INCORPORATI DELLA SHELL più avanti).
       OPTIND L'indice del prossimo argomento che dev'essere elaborato dal comando incorporato getopts (si  veda
              COMANDI INCORPORATI DELLA SHELL più avanti).
       OSTYPE Automaticamente  impostata  a  una  stringa  che  descrive  il  sistema operativo su cui bash è in
              esecuzione.  Il valore predefinito è dipendente dal sistema.
       PIPESTATUS
              Una variabile array (si veda Array più avanti) contenente un elenco di valori  di  stato  d'uscita
              dai  processi  nelle  pipeline  eseguite più recentemente in primo piano [cioè senza rilasciare il
              controllo del terminale] (può contenere anche un solo comando).
       PPID   L'ID di processo del genitore della shell.  Questa variabile è in sola lettura.
       PWD    La directory di lavoro corrente come impostata dal comando cd.
       RANDOM Ogni volta che questo parametro è referenziato, viene generato un numero intero casuale  fra  0  e
              32767.   La sequenza di numeri casuali può essere inizializzata assegnando un valore a RANDOM.  Se
              RANDOM viene annullata, perde le sue proprietà speciali, anche se è poi reimpostata.
       READLINE_LINE
              Il contenuto del buffer di riga readline per l'uso con "bind  -x"  (si  veda  COMANDI  INCORPORATI
              DELLA SHELL più avanti).
       READLINE_POINT
              La  posizione del punto di inserzione nel buffer di riga readline per l'uso con "bind -x" (si veda
              COMANDI INCORPORATI DELLA SHELL più avanti).
       REPLY  Impostata alla riga di input  letta  dal  comando  incorporato  read  quando  nessun  argomento  è
              specificato.
       SECONDS
              Ogni  volta  che  questo parametro è referenziato, viene restituito il numero di secondi trascorsi
              dalla chiamata della shell.  Se un valore è assegnato a SECONDS, il valore restituito in  base  ai
              riferimenti successivi è il numero di secondi trascorsi dall'assegnamento più il valore assegnato.
              Se SECONDS viene annullata, perde le sue proprietà speciali, anche se è poi reimpostata.
       SHELLOPTS
              Una lista, separata da due punti, di opzioni di shell abilitate.  Ogni parola  nella  lista  è  un
              argomento  valido  per  l'opzione -o al comando incorporato set (si veda COMANDI INCORPORATI DELLA
              SHELL più avanti).  Le opzioni che appaiono in SHELLOPTS sono quelle indicate come on da  set  -o.
              Se  questa  variabile è nell'ambiente quando bash viene avviata, ogni opzione di shell nella lista
              viene abilitata prima di leggere un qualsiasi file di avvio.  Questa variabile è in sola lettura.
       SHLVL  È incrementato di uno ogni volta che una istanza di bash viene avviata.
       UID    Si espande all'ID-utente  dell'utente  corrente,  inizializzato  all'avvio  della  shell.   Questa
              variabile è in sola lettura.

       Le  seguenti  variabili sono usate dalla shell.  In alcuni casi, bash assegna un valore predefinito a una
       variabile; questi casi sono elencati più avanti.

       BASH_ENV
              Se questo parametro è impostato quando bash sta eseguendo uno script di shell,  il  suo  valore  è
              interpretato  come  un  nome  di  file  contenente  comandi  per  inizializzare  la shell, come in
              ~/.bashrc.  Il valore di BASH_ENV è soggetto a espansione di parametro, sostituzione di comando ed
              espansione  aritmetica  prima  di  essere interpretato come un nome di file.  PATH non è usato per
              cercare il nome di file risultante.
       BASH_XTRACEFD
              Se impostata a un valore intero corrispondente a un descrittore di  file  valido,  bash   scriverà
              l'output  della  traccia  generata  quando  set  -x  è  abilitato  a quel descrittore di file.  Il
              descrittore di file viene chiuso quando BASH_XTRACEFD non è impostata  o  le  viene  assegnato  un
              nuovo  valore.   Annullando  BASH_XTRACEFD o assegnandole una stringa vuota l'output della traccia
              verrà inviato allo standard error.  Da notare che impostando BASH_XTRACEFD a 2 (il descrittore  di
              file  dello  standard  error)  e, successivamente, azzerandola il risultato sarà la chiusura dello
              standard error.
       CDPATH Il percorso di ricerca per il comando cd.  Questo è un elenco di directory, separate da due punti,
              nelle  quali la shell cerca le directory di destinazione specificate dal comando cd.  Un valore di
              esempio è ".:~:/usr".
       COLUMNS
              Usato dal comando composto select per determinare il numero di colonne del terminale nella  stampa
              delle liste di selezione.  Automaticamente re-impostata al ricevimento di un segnale SIGWINCH.
       COMPREPLY
              Una  variabile  array dalla quale bash legge i possibili completamenti generati da una funzione di
              shell invocata dal servizio di completamento programmabile (si  veda  Completamento  programmabile
              più avanti).
       EMACS  Se bash trova questa variabile d'ambiente alla partenza della shell col valore "t", presume che la
              shell sia in esecuzione in un buffer di shell Emacs e disabilita la modifica della riga.
       ENV    Simile a BASH_ENV; usata quando la shell viene invocata in modalità POSIX.
       FCEDIT L'editor predefinito per il comando incorporato fc.
       FIGNORE
              Una lista di suffissi, separati da due punti, da ignorare quando si effettua il completamento  del
              nome  di  file  (si  veda READLINE più avanti).  Un nome di file il cui suffisso corrisponde a una
              delle voci in FIGNORE è escluso dalla lista dei nomi di file individuati.  Un valore di esempio  è
              ".o:~".
       FUNCNEST
              Se impostato a un valore numerico maggiore di 0, definisce un livello massimo di nidificazione per
              una funzione.  Invocazioni di funzione eccedenti questo livello provocheranno  l'interruzione  del
              comando corrente.
       GLOBIGNORE
              Una  lista  di  modelli,  separati  da  due  punti, che definiscono l'insieme dei nomi di file che
              l'espansione del nome di percorso deve ignorare.  Se un nome di file individuato da un modello  di
              espansione  del  percorso  corrisponde  anche a uno dei modelli in GLOBIGNORE, viene rimosso dalla
              lista dei nomi da individuare.
       HISTCONTROL
              Una lista di valori, separati da due  punti,  che  controllano  come  i  comandi  vengono  salvati
              nell'elenco  della  cronologia.   Se la lista di valori include ignorespace, le righe che iniziano
              con un carattere di spazio non  vengono  salvate  nell'elenco  della  cronologia.   Un  valore  di
              ignoredups  fa sì che non venga salvata ogni riga uguale all'elemento precedente della cronologia.
              Un valore di ignoreboth è la combinazione di ignorespace e ignoredups.  Un valore di erasedups  fa
              sì che tutte le righe uguali alla riga corrente vengano rimosse dall'elenco della cronologia prima
              che la riga venga salvata.  Qualsiasi valore che non è nella lista di cui sopra  è  ignorato.   Se
              HISTCONTROL non è impostato o non include un valore valido, tutte le righe lette dall'analizzatore
              sintattico della shell sono salvate nell'elenco  della  cronologia,  a  meno  che  non  sia  stato
              specificato  HISTIGNORE.   La  seconda  riga  e le successive di un comando composto multiriga non
              vengono controllate, e sono aggiunte alla cronologia indipendentemente dal valore di HISTCONTROL.
       HISTFILE
              Il nome del file nel quale è salvata la cronologia dei comandi (si veda  CRONOLOGIA  più  avanti).
              Il  valore  predeterminato  è  ~/.bash_history.   Se  è  annullato la cronologia dei comandi non è
              salvata al termine di una shell interattiva.
       HISTFILESIZE
              Il numero massimo di righe contenute nel file della  cronologia.   Quando  a  questa  variabile  è
              assegnato  un valore, il file della cronologia è accorciato, se necessario, rimuovendo le voci più
              vecchie, per contenere non più di quel numero di righe.  Il valore predefinito  è  500.   Il  file
              della  cronologia è inoltre troncato a questa dimensione dopo la scrittura al termine di una shell
              interattiva.
       HISTIGNORE
              Una lista di modelli separati da due punti usata per decidere quali righe di comando devono essere
              salvate  nell'elenco  della  cronologia.   Ogni  modello  comincia  all'inizio  della  riga e deve
              corrispondere alla riga completa (nessun `*' implicito è aggiunto).  Ogni  modello  è  confrontato
              con  la riga dopo che i controlli specificati da HISTCONTROL sono stati applicati.  In aggiunta ai
              normali modelli di shell  che  confrontano  caratteri,  `&'  designa  la  linea  precedente  della
              cronologia.  `&' può essere protetto usando una barra inversa; la barra inversa è rimossa prima di
              eseguire un confronto.  La seconda riga e le successive  di  un  comando  composto  multiriga  non
              vengono controllate, e sono aggiunte alla cronologia indipendentemente dal valore di HISTIGNORE.
       HISTSIZE
              Il  numero di comandi da memorizzare nella cronologia dei comandi (si veda CRONOLOGIA più avanti).
              Il valore predefinito è 500.
       HISTTIMEFORMAT
              Se questa variabile è impostata e non nulla, il suo valore è usato come  stringa  di  formato  per
              strftime(3)  per  stampare la marcatura oraria associata a ogni voce della cronologia mostrata dal
              comando incorporato history.  Se questa variabile è impostata, data e  ora  verranno  scritte  nel
              file della cronologia in modo da essere disponibili anche in successive sessioni della shell.  Per
              distinguere la marcatura oraria dalle altre righe della cronologia viene  usato  il  carattere  di
              commento.
       HOME   La home directory dell'utente corrente; l'argomento predefinito per il comando incorporato cd.  Il
              valore di questa variabile è anche usata quando si effettua l'espansione della tilde.
       HOSTFILE
              Contiene il nome di un file nello stesso formato di /etc/hosts che dovrà essere  letto  quando  la
              shell  ha  bisogno di completare un nome di host.  La lista dei possibili completamenti di nome di
              host può essere cambiata mentre la shell è in esecuzione; alla prossima occasione in cui si  tenta
              il  completamento  del  nome di host dopo che è cambiato il valore, bash aggiunge il contenuto del
              nuovo file alla lista esistente.  Se HOSTFILE è impostato ma non ha alcun valore, o  non  contiene
              il nome di un file leggibile, bash tenta di leggere /etc/hosts per ottenere la lista dei possibili
              completamenti del nome di host.  Quando HOSTFILE viene annullato, la lista dei nomi di host  viene
              pure annullata.
       IFS    L'Internal  Field  Separator  (separatore  di campo interno) è usato per la suddivisione in parole
              dopo l'espansione e per dividere le righe in parole quando si esegue il comando incorporato  read.
              Il valore predefinito è ``<space><tab><newline>''.
       IGNOREEOF
              Controlla l'azione della shell al ricevimento di un carattere EOF come unico contenuto di una riga
              di input.  Se impostato, il valore è il numero di caratteri EOF consecutivi da battere come  primo
              carattere  su  una  riga di input prima che bash esca.  Se la variabile esiste ma non ha un valore
              numerico, o non ha alcun valore, il valore predefinito è 10.  Se non esiste, EOF  indica  la  fine
              dell'input per la shell.
       INPUTRC
              Il  nome  di  file  per  il  file  di  avvio  di readline che prevale sul valore predefinito che è
              ~/.inputrc (si veda READLINE più avanti).
       LANG   Usata per determinare la categoria di localizzazione per qualsiasi categoria non  specificatamente
              indicata da una delle variabili che iniziano con LC_.
       LC_ALL Questa  variabile prevale sul valore di LANG e su qualsiasi altra variabile LC_ che specifichi una
              categoria di localizzazione.
       LC_COLLATE
              Questa variabile determina l'ordine di  collazione  usato  quando  vengono  ordinati  i  risultati
              dell'espansione  di  nome  di percorso, e determina il comportamento di espressioni di intervallo,
              classi di equivalenza e sequenze di ordinamento all'interno dell'espansione di nome di percorso  e
              della corrispondenza tra stringhe.
       LC_CTYPE
              Questa  variabile  determina  l'interpretazione  di  caratteri  e  il  comportamento  di classi di
              caratteri all'interno dell'espansione di nome di percorso e della corrispondenza tra stringhe.
       LC_MESSAGES
              Questa variabile determina la localizzazione usata per tradurre stringhe tra virgolette  precedute
              da un $.
       LC_NUMERIC
              Questa variabile determina la categoria di localizzazione usata per la formattazione dei numeri.
       LINES  Usato  dal  comando  composto select per determinare il numero di linee del terminale nella stampa
              delle liste di selezione.  Automaticamente re-impostata al ricevimento di un segnale SIGWINCH.
       MAIL   Se questo parametro è impostato a un nome di file o di directory e la  variabile  MAILPATH  non  è
              impostata,  bash  informa l'utente dell'arrivo di posta nel file specificato o nella directory del
              formato Maildir.
       MAILCHECK
              Specifica la frequenza (in secondi) con cui bash controlla la posta.  Il valore predefinito  è  60
              secondi.   Quando è il momento di controllare la posta, la shell lo fa prima di mostrare il prompt
              primario.  Se questa variabile non è impostata, o è impostata a un valore che non  sia  un  numero
              maggiore o uguale a zero, la shell disabilita il controllo della posta.
       MAILPATH
              Una  lista  di  nomi  di  file  separati  da due punti, da usare per il controllo della posta.  Il
              messaggio che deve essere stampato all'arrivo dei messaggi  in  un  particolare  file  può  essere
              specificato separando il nome del file dal messaggio con un `?'.  Quando viene usato nel testo del
              messaggio $_ è espanso al nome del file di posta corrente.  Per esempio:
              MAILPATH='/var/mail/bfox?"You have mail":~/shell-mail?"$_ has mail!"'
              Bash fornisce un valore predefinito per questa variabile, ma il posizionamento dei file  di  posta
              degli utenti utilizzato è dipendente dal sistema (per esempio, /var/mail/$USER).
       OPTERR Se  impostato  al  valore  1,  bash  mostra  i messaggi di errore generati dal comando incorporato
              getopts (si veda COMANDI INCORPORATI DELLA SHELL più avanti).  OPTERR è inizializzato  ad  1  ogni
              volta che viene invocata la shell o viene eseguito uno script di shell.
       PATH   Il  percorso  di ricerca dei comandi.  È un elenco di directory separate da due punti, nelle quali
              la shell cerca i comandi (si veda ESECUZIONE DEI COMANDI più avanti).  Un  nome  di  directory  di
              lunghezza  zero  (nulla)  nel  valore  di PATH indica la directory corrente.  Un nome di directory
              nullo può apparire come una serie di due punti adiacenti, o come due punti all'inizio o alla fine.
              Il  percorso  predefinito è dipendente dal sistema ed è impostato dall'amministratore che installa
              bash.  Un valore frequente è ``/usr/gnu/bin:/usr/local/bin:/usr/ucb:/bin:/usr/bin''.
       POSIXLY_CORRECT
              Se questa variabile è presente nell'ambiente quando viene avviata bash, la shell entra in modalità
              posix  prima  di  leggere  i  file  di avvio, come se l'opzione di invocazione --posix fosse stata
              specificata.  Se è impostata mentre la shell è in esecuzione, bash abilita la modalità posix, come
              se il comando set -o posix fosse stato eseguito.
       PROMPT_COMMAND
              Se  impostato,  il  valore  è  eseguito  ogni  volta  come  un comando prima di scrivere il prompt
              primario.
       PROMPT_DIRTRIM
              Se impostata a un numero maggiore di zero, il valore è usato come il numero  di  componenti  della
              directory finale da conservare quando si espandono i caratteri protetti della stringa di prompt \w
              e \W (si veda PROMPTING più avanti).  I caratteri rimossi sono sostituiti da un'ellissi.
       PS1    Il valore di questo parametro è espanso (si veda STRINGHE DI  PROMPT  più  avanti)  e  usato  come
              stringa del prompt primario.  Il valore predefinito è``\s-\v\$ ''.
       PS2    Il  valore di questo parametro è espanso allo stesso modo di PS1 ed è usato come stringa di prompt
              secondario.  Il valore predefinito è ``> ''.
       PS3    Il valore di questo parametro è usato come prompt per il comando select (si veda GRAMMATICA  DELLA
              SHELL sopra).
       PS4    Il  valore  di questo parametro è espanso allo stesso modo di PS1 ed il valore è stampato prima di
              ogni comando che bash mostra durante un  trace  di  esecuzione.   Il  primo  carattere  di  PS4  è
              replicato tante volte, quanto necessario, per indicare livelli multipli di indirezione.  Il valore
              predefinito è ``+ ''.
       SHELL  In questa variabile d'ambiente è contenuto il percorso completo della shell.  Se non  è  impostata
              quando  la  shell  viene  avviata,  bash  le  assegna  il  percorso  completo della shell di login
              dell'utente corrente.
       TIMEFORMAT
              Il valore di questo parametro è usato come stringa di formato per specificare  come  dovrà  essere
              mostrata  l'informazione  su data e ora per pipeline aventi come prefisso la parola riservata time
              Il carattere % introduce una sequenza di formattazione che è espansa a un valore di data e  ora  o
              ad  altre  informazioni.   Le  sequenze di formattazione e il loro significato sono i seguenti; le
              parentesi quadre denotano parti opzionali.
              %%        Una % letterale.
              %[p][l]R  Il tempo trascorso in secondi.
              %[p][l]U  Il numero di secondi di utilizzo della CPU in modalità utente.
              %[p][l]S  Il numero di secondi di utilizzo della CPU in modalità sistema.
              %P        La percentuale di utilizzo della CPU, calcolata come (%U + %S) / %R.

              La parte opzionale p è una cifra che specifica la precisione, il numero di cifre  frazionali  dopo
              il  separatore decimale.  Un valore pari a 0 fa sì che nessun separatore decimale o frazione venga
              inserito nell'output.  Possono essere specificate al massimo  tre  posizioni  dopo  il  separatore
              decimale;  valori  di  p  maggiori di 3 sono cambiati a 3.  Se p non è specificato è utilizzato il
              valore 3.

              La parte opzionale l specifica un formato più lungo, inclusi i minuti, nella forma MMmSS.FFs.   Il
              valore di p determina se la frazione è inclusa o meno.

              Se    questa   variabile   non   è   impostata,   bash   agisce   come   se   avesse   il   valore
              $'\nreal\t%3lR\nuser\t%3lU\nsys%3lS'.   Se  il  valore  è  nullo,  non   viene   mostrata   alcuna
              informazione di tempo.  Una newline finale è aggiunta quando la stringa di formato è visualizzata.
       TMOUT  Se  impostato  a  un  valore  maggiore  di  zero,  TMOUT è trattato come il tempo limite (timeout)
              predefinito per il comando incorporato read.  Il comando  select viene  terminato  se  non  riceve
              input  dopo  TMOUT  secondi  quando l'input proviene da un terminale.  In una shell interattiva il
              valore è interpretato come il numero di secondi di attesa per l'input dopo l'emissione del  prompt
              primario. Se l'input non arriva Bash termina dopo aver aspettato per quel numero di secondi.
       TMPDIR Se  impostato,  bash  usa  il  suo  valore  come  nome  della directory nella quale bash crea file
              temporanei a uso della shell.
       auto_resume
              Questa variabile controlla il modo con cui la shell interagisce con l'utente e con il job-control.
              Se  questa  variabile  è  impostata,  dei  comandi  semplici  composti  da  una  sola parola senza
              ridirezioni sono considerati come candidati per la ripresa di un job in esecuzione che  sia  stato
              sospeso.   Non  è  possibile  alcuna  ambiguità; se vi è più di un job che comincia con la stringa
              digitata, è scelto il job su cui si è effettuato l'accesso più recentemente.  Il nome  di  un  job
              sospeso,  in  questo  contesto,  è  la riga di comando usata per avviarlo.  Se impostato al valore
              exact, la stringa fornita deve essere esattamente uguale al nome di un job fermo; se  impostato  a
              substring, la stringa fornita deve combaciare con una sottostringa del nome di un job sospeso.  Il
              valore substring fornisce funzionalità analoghe  all'identificatore  del  job  %?   (si  veda  JOB
              CONTROLi  più  avanti).   Se impostato a qualsiasi altro valore, la stringa fornita deve essere un
              prefisso del nome di un job sospeso; questo consente funzionalità analoghe  all'identificatore  di
              job %string
       histchars
              Sono  i  due  o  tre  caratteri che controllano l'espansione della cronologia e la suddivisione in
              token (si veda ESPANSIONE DELLA CRONOLOGIA più avanti).  Il primo  carattere  è  il  carattere  di
              espansione della cronologia, il carattere che segnala l'inizio di una espansione della cronologia,
              normalmente `!'.  Il secondo carattere è il carattere di sostituzione rapida,  che  è  usato  come
              scorciatoia  per  rieseguire  il  comando  precedentemente  inserito,  sostituendo una stringa con
              un'altra nel comando.  Il valore predefinito è `^'.  Il terzo carattere, opzionale, è il carattere
              che  indica  che  il  resto della riga è un commento, quando è trovato come primo carattere di una
              parola, normalmente `#'.  Il carattere di commento della cronologia  fa  sì  che  la  sostituzione
              della cronologia venga saltata per le rimanenti parole sulla riga.  Esso non fa necessariamente sì
              che l'analizzatore della shell tratti il resto della riga come un commento.

   Array
       Bash fornisce variabili array monodimensionali indicizzate e  associative.   Ogni  variabile  può  essere
       usata  come  un  array indicizzato; il comando incorporato declare dichiara esplicitamente un array.  Non
       c'è un limite massimo per la dimensione  di  un  array,  né  alcuna  richiesta  che  gli  elementi  siano
       indicizzati  o  assegnati in modo contiguo.  Gli array indicizzati sono referenziati usando numeri interi
       (incluse le espressioni aritmetiche)  e  cominciano  con  l'indice  zero.   Gli  array  associativi  sono
       referenziati utilizzando stringhe arbitrarie.

       Un  array  indicizzato  è  creato  automaticamente  se  gli è assegnata una qualsiasi variabile usando la
       sintassi nome[deponente]=valore.   Il  deponente  (indice  dell'array)  è  trattato  come  un'espressione
       aritmetica  che  deve  risultare  un  numero.   Se deponente è un numero minore di zero, viene usato come
       scostamento dall'indice massimo dell'array aumentato di uno (cosicché un  deponenete  di  -1  corrisponde
       all'ultimo  elemento  dell'array).   Per dichiarare esplicitamente un array indicizzato, usare declare -a
       nome (si veda COMANDI INCORPORATI DELLA SHELL più avanti).  È anche accettato declare -a nome[deponente];
       il deponente viene ignorato.

       Array associativi sono creati usando declare -A name.

       Per  una  variabile  array  possono  essere specificati degli attributi utilizzando i comandi incorporati
       declare e readonly.  Ogni attributo si applica a tutti gli elementi di un array.

       Agli elementi dell'array vengono assegnati valori usando assegnamenti composti della forma  nome=(valore1
       ...  valoren),  dove ogni valore è della forma [deponente]=stringa.  Le assegnazioni di array indicizzati
       non richiedono le parentesi e i deponente.  Quando si fanno assegnamenti ad array indicizzati, se vengono
       fornite  le  parentesi  opzionali  e  il deponente, l'elemento viene assegnato a quell'indice; altrimenti
       l'indice dell'elemento assegnato è l'ultimo indice già utilizzato  aumentato  di  uno.   L'indicizzazione
       parte da zero.

       Quando si fanno assegnamenti a un array associativo il deponente è richiesto.

       Questa  sintassi è accettata anche dal comando incorporato declare.  Elementi singoli di un array possono
       essere assegnati con la sintassi nome[deponente]=valore introdotta più sopra.

       Qualsiasi elemento di un array  può  essere  referenziato  con  ${nome[deponente]}.   Le  parentesi  sono
       richieste  per evitare conflitti con l'espansione di percorso.  Se deponente è @ o *, la parola espande a
       tutti gli elementi di nome.  Questi deponenti differiscono solo  quando  la  parola  appare  inclusa  fra
       virgolette.  Se la parola è quotata con virgolette, ${nome[*]} espande a una singola parola col valore di
       ogni elemento dell'array separato dal primo carattere della variabile speciale IFS, e ${nome[@]}  espande
       ogni elemento di nome come una parola separata.  Quando non c'è l'elemento di array, ${nome[@]} è espanso
       alla stringa nulla.  Se l'espansione quotata con virgolette si trova dentro una parola, l'espansione  del
       primo  parametro  è  legato  con  la  parte  iniziale  della parola originale, e l'espansione dell'ultimo
       parametro è legato con l'ultima parte della  parola  originale.   Questo  è  analogo  all'espansione  dei
       parametri  speciali * e @ (si veda Parametri speciali sopra).  ${#nome[deponente]} espande alla lunghezza
       di ${nome[deponente]}.  Se deponente  è  *  o  @,  l'espansione  è  il  numero  di  elementi  dell'array.
       Referenziare  una  variabile  array senza specificare un deponente equivale a referenziare l'array con un
       deponente pari a zero.

       Una variabile array è considerata impostata se ad un deponente è stato assegnato un valore.   La  stringa
       nulla è un valore valido.

       Il  comando  incorporato unset è usato per annullare gli array.  unset nome[deponente] annulla l'elemento
       di array a indice deponente.  Bisogna stare attenti a evitare effetti  collaterali  indesiderati  causati
       dall'espansione  di un nome di percorso.  unset nome, dove nome è un array, o unset nome[deponente], dove
       deponente è * o @, rimuove l'intero array.

       Ciascuno dei comandi incorporati declare, local e readonly accetta un'opzione -a per specificare un array
       indicizzato  e  un'opzione  -A  per  specificare  un  array  associativo.  Se vengono fornite entrambe le
       opzioni, -A ha la precedenza.  Il comando incorporato read accetta un'opzione -a per assegnare a un array
       una lista di parole lette dallo standard input.  I comandi incorporati set e declare mostrano i valori di
       array in modo che da essere riutilizzabili come assegnamenti.

ESPANSIONE

       L'espansione è eseguita sulla riga di comando dopo che essa è stata divisa in parole.  Vi sono sette tipi
       di  espansione  effettuati:  espansione  delle  parentesi  graffe,  espansione della tilde, espansione di
       parametro e variabile,  sostituzione  di  comando,  espansione  aritmetica,  suddivisione  in  parole  ed
       espansione di percorso.

       L'ordine  di  espansione  è:  espansione  delle  parentesi  graffe, espansione della tilde, espansione di
       parametro, di variabile e aritmetica e sostituzione di comando (fatta da sinistra a destra), suddivisione
       in parole ed espansione di percorso.

       Sui sistemi che la supportano, è disponibile un'espansione aggiuntiva: la sostituzione di processo.

       Solo  l'espansione  delle  parentesi graffe, la suddivisione in parole e l'espansione di percorso possono
       cambiare il numero di parole dell'espansione; le altre espansioni espandono una  singola  parola  in  una
       singola  parola.   La sola eccezione a questo è l'espansione di ``$@'' e "${nome[@]}" come spiegato sopra
       (si veda PARAMETRI).

   Espansione delle parentesi graffe
       Espansione delle parentesi graffe  è  un  meccanismo  con  il  quale  possono  essere  generate  stringhe
       arbitrarie.  Questo meccanismo è simile all'espansione di percorso, ma non è necessario che i file il cui
       nome è generato esistano.  I modelli cui si applica l'espansione delle parentesi graffe hanno la forma di
       un  preambolo  opzionale,  seguito  da  una  serie  di  stringhe separate da virgola o una espressione di
       sequenza racchiusa fra parentesi graffe, seguite da un' appendice opzionale.  Il preambolo è  preposto  a
       ogni  stringa  contenuta dentro le parentesi graffe e l'appendice è poi appesa a ogni stringa risultante,
       espandendo da sinistra a destra.

       Le espansioni delle parentesi graffe possono essere nidificate.  Il risultato di ogni stringa espansa non
       viene  ordinato;  è  conservato l'ordine da sinistra a destra.  Per esempio, a{d,c,b}e si espande in `ade
       ace abe'.

       Un'espressione di sequenza prende la forma {x..y[..incr]}, dove x e y sono o numeri  interi  o  caratteri
       singoli  e  incr,  un  incremento  opzionale,  è  un  numero  intero.   Se  si specificano numeri interi,
       l'espressione espande a ogni numero fra x e y, incluso.  Ai numeri interi specificati può essere aggiunto
       uno  0  iniziale per costringere ogni termine ad avere la stessa ampiezza.  Quando x o y iniziano con uno
       zero, la shell tenta di forzare tutti  i  termini  generati  a  contenere  lo  stesso  numero  di  cifre,
       aggiungendo  degli  zeri  ove  necessario.   Se  si  specificano  caratteri, l'espressione espande a ogni
       carattere lessicograficamente compreso fra x e y, incluso.  Da notare che entrambi x e  y  devono  essere
       dello  stesso  tipo.   Quando  fornito,  l'incremento  è  usato  per distinguere i termini.  L'incremento
       predefinito è 1 o -1 a seconda del caso.

       L'espansione delle parentesi graffe è  effettuata  prima  di  qualsiasi  altra  espansione,  e  qualunque
       carattere  speciale  per  uso  delle  altre  espansioni  viene  lasciato  com'era  nel risultato.  Essa è
       strettamente testuale.  Bash non applica alcuna interpretazione sintattica al contesto dell'espansione  o
       al testo tra parentesi graffe.

       Un'espansione  delle  parentesi  graffe  correttamente  formata  deve  contenere  una parentesi graffa di
       apertura e una di chiusura, non quotate, e almeno una virgola non quotata.   Qualunque  espansione  delle
       parentesi  graffe erroneamente formata è lasciata inalterata.  Una { o , può essere quotata con una barra
       inversa per evitare che venga considerata parte di un'espressione  fra  parentesi  graffe.   Per  evitare
       conflitti  con  l'espansione  di  parametro,  la  stringa  ${ non dà luogo all'espansione delle parentesi
       graffe.

       Questo costrutto è tipicamente usato come abbreviazione quando  il  prefisso  comune  delle  stringhe  da
       generare è più lungo che negli esempi sopra:

              mkdir /usr/local/src/bash/{old,new,dist,bugs}
       o
              chown root /usr/{ucb/{ex,edit},lib/{ex?.?*,how_ex}}

       L'espansione  delle  parentesi graffe introduce una lieve incompatibilità con le versioni tradizionali di
       sh.  sh non tratta le parentesi graffe aperte e chiuse, specialmente quando esse appaiono come  parte  di
       una  parola,  e  le  conserva  in uscita.  Bash rimuove le parentesi graffe dalle parole come consequenza
       dell'espansione delle parentesi graffe.  Per esempio, una parola data a sh come file{1,2} appare identica
       nell'output.   La  stessa parola è data in output come file1 file2 dopo l'espansione operata da bash.  Se
       si desidera una stretta compatibilità con sh si avvia bash con l'opzione +B o si disabilita  l'espansione
       delle  parentesi  graffe  con  l'opzione  +B  al comando set (si veda COMANDI INCORPORATI DELLA SHELL più
       avanti).

   Espansione della tilde
       Se una parola comincia con un carattere tilde (`~') non quotato, tutti i caratteri che precedono la prima
       barra [/] non quotata (o tutti i caratteri, se non vi è alcuna barra) sono considerati un prefisso tilde.
       Se nessuno dei caratteri nel prefisso tilde è quotato, i caratteri nel prefisso tilde che segue la  tilde
       sono  trattati  come  un possibile nome di login.  Se questo nome di login è la stringa nulla, la tilde è
       sostituita con il valore del parametro HOME.  Se HOME  viene  annullato,  è  invece  sostituita  la  home
       directory dell'utente che sta eseguendo la shell.  Altrimenti, il prefisso tilde è sostituito con la home
       directory associata al nome di login specificato.

       Se il prefisso tilde è un `~+' il valore della variabile di shell PWD sostituisce il prefisso tilde.   Se
       il  prefisso  tilde è un `~-', il valore della variabile di shell OLDPWD, se impostato, viene sostituito.
       Se il carattere che segue la tilde nel prefisso tilde è un numero N, con un  prefisso  opzionale   `+'  o
       `-',  il  prefisso tilde è sostituito dal corrispondente elemento dallo stack di directory, come dovrebbe
       essere mostrato dal comando incorporato dirs invocato col prefisso tilde come argomento.  Se il carattere
       che segue la tilde nel prefisso tilde è un numero non preceduto da un segno `+' o `-', viene assunto `+'

       Se il nome di login non è valido o l'espansione della tilde non ha successo, la parola rimane invariata.

       Ogni assegnamento di variabile è controllato per prefissi tilde non quotati che seguono immediatamente un
       : o il primo =.  In questi casi viene effettuata l'espansione della tilde.  Di  conseguenza,  si  possono
       usare  nomi  di file con delle tilde negli assegnamenti a PATH, MAILPATH, e CDPATH, e la shell assegna il
       valore espanso.

   Espansione di parametro
       Il carattere `$' introduce  l'espansione  di  parametro,  la  sostituzione  di  comando,  o  l'espansione
       aritmetica.   Il  nome  o simbolo del parametro che dev'essere espanso può essere racchiuso tra parentesi
       graffe, che sono opzionali ma servono a proteggere la variabile che deve  essere  espansa  dai  caratteri
       immediatamente seguenti, che potrebbero essere interpretati come parte del nome della variabile stessa.

       Quando  vengono  usate  le parentesi graffe, la parentesi graffa finale corrispondente è la prima `}' non
       protetta da una barra inversa o da stringhe quotate, e non parte di un'espansione aritmetica inclusa,  di
       una sostituzione di comando o di un'espansione di parametro.

       ${parametro}
              Il  valore  di  parametro  è sostituito.  Le parentesi graffe sono richieste quando parametro è un
              parametro posizionale con più di una cifra, o quando parametro è seguito da un carattere  che  non
              deve essere interpretato come parte del suo nome.

       Se  il  primo  carattere  di parametro è un punto esclamativo (!), è introdotto un livello di indirezione
       della variabile.  Bash usa il valore della variabile  formata  dal  resto  del  parametro  come  nome  di
       variabile;  questa  variabile è poi espansa e quel valore è usato nel resto della sostituzione, piuttosto
       che il valore stesso di parametro.  Questa è conosciuta come espansione indiretta.  Le  eccezioni  a  ciò
       sono  le  espansioni  di  ${!prefisso*}  e  ${!nome[@]}  descritte più avanti.  Il punto esclamativo deve
       seguire immediatamente la parentesi graffa iniziale per introdurre l'indirezione.

        n ognuno dei casi sotto riportati, parola è soggetta a espansione della tilde, espansione di  parametro,
       sostituzione di comando ed espansione aritmetica.

       Quando  non sta effettuando l'espansione della sottostringa, usando le forme documentate più avanti, Bash
       controlla se un parametro non è impostato o è nullo.  L'omissione dei due punti provoca il solo controllo
       di un parametro non impostato.

       ${parametro:-parola}
              Usa  i  valori  predefiniti.  Se parametro non è impostato o è nullo, è sostituita l'espansione di
              parola.  Altrimenti, il valore di parametro è sostituito
       ${parametro:=parola}
              Assegna i valori predefiniti.  Se parametro non è impostato o è nullo, l'espansione  di  parola  è
              assegnata  a  parametro.  Il valore di parametro è quindi sostituito.  I parametri posizionali e i
              parametri speciali non possono essere assegnati in questo modo.
       ${parametro:?parola}
               una segnalazione di errore se è nullo o è stato annullato.  Se parametro  è  nullo  o  è  stato
              annullato, l'espansione di parola (o un messaggio di segnalazione, se parola non è presente) viene
              scritta sullo standard error e la shell, se non è interattiva, termina.  Altrimenti, è  sostituito
              il valore di parametro.
       ${parametro:+parola}
              Usa  un  valore  alternativo.   Se parametro è nullo o è stato annullato, non è sostituito niente,
              altrimenti è sostituita l'espansione di parola.
       ${parametro:scostamento}
       ${parametro:scostamento:lunghezza}
              Espansione di sottostringa.  Espande i caratteri  di  parametro  fino  a  lunghezza  partendo  dal
              carattere  specificato  da  scostamento.   Se lunghezza viene omesso, espande alla sottostringa di
              parametro (sempre partendo dal carattere specificato da scostamento); lunghezza e scostamento sono
              espressioni  aritmetiche  (si veda VALUTAZIONE ARITMETICA più avanti).  Se scostamento è un numero
              minore di zero, il valore viene usato come scostamento dalla fine del  valore  di  parametro.   Se
              lunghezza  è  un  numero  minore  di  zero,  e  parametro non è @ e neanche un array indicizzato o
              associativo, viene interpretato come uno scostamento dalla fine del valore di parametro  piuttosto
              che come un numero di caratteri, e l'espansione è rappresentata dai caratteri fra due scostamenti.
              Se parametro è @, il risultato è un numero di parametri posizionali pari a lunghezza a partire  da
              scostamento.   Se  parametro è un nome di array indicizzato con deponente @ o *, il risultato è un
              numero di elementi dell'array pari  a  lunghezza  a  partire  da  ${parametro[scostamento]}.   Uno
              scostamento  negativo è inteso come relativo al massimo indice dell'array specificato aumentato di
              uno.  L'espansione di sottostringa applicata a un array associativo produce risultati  indefiniti.
              Notare  che  uno  scostamento  negativo dev'essere separato dai due punti da almeno uno spazio per
              evitare di essere confuso con l'espansione di :- .  L'indicizzazione della sottostringa è  a  base
              zero a meno che non vengano usati i parametri posizionali, nel qual caso l'indicizzazione parte da
              1 come impostazione predefinita.  Se scostamento è 0, e vengono  usati  i  parametri  posizionali,
              alla lista è aggiunto il prefisso $0.

       ${!prefisso*}
       ${!prefisso@}
              Nomi  corrispondenti  al  prefisso.   Espande  ai  nomi  delle  variabili  i cui nomi iniziano con
              prefisso, separati dal primo carattere della  variabile  speciale  IFS  Quando  viene  usato  @  e
              l'espansione appare tra virgolette, ogni nome di variabile si espande in una parola separata.

       ${!nome[@]}
       ${!nome[*]}
              Lista  delle  chiavi  di array.  Se nome è una variabile array, espande alla lista degli indici di
              array (chiavi) assegnati in nome.  Se nome non è un array, espande a 0 se nome è  impostato  ed  è
              nullo  in  caso  contrario.   Quando  @  è usato e l'espansione appare fra virgolette, ogni chiave
              espande a una parola separata.

       ${#parametro}
              ${#lunghezza parametro} È sostituita la lunghezza  in  caratteri  del  valore  di  parametro.   Se
              parametro  è  * o @, il valore sostituito è il numero di parametri posizionali.  Se parametro è un
              nome di array contrassegnato da * o @, il valore sostituito è il numero di elementi nell'array.

       ${parametro#parola}
       ${parametro##parola}
              Rimozone del prefisso corrispondente al modello.  La parola è  espansa  per  produrre  un  modello
              proprio come nell'espansione di percorso.  Se il modello trova una corrispondenza con l'inizio del
              valore di parametro, allora il risultato dell'espansione è il valore espanso di parametro  con  il
              più corto dei modelli che corrispondono cancellato (nel caso di ``#'' ) o il più lungo dei modelli
              che corrispondono cancellato (nel caso di ``##'' ).   Se  parametro  è  @  o  *,  l'operazione  di
              rimozione del modello è applicata di volta in volta a ogni parametro posizionale, e l'espansione è
              la lista che ne risulta.  Se parametro è una variabile array con indice @  o  *,  l'operazione  di
              rimozione  del  modello  è applicata a ognuno degli elementi dell'array, e l'espansione è la lista
              risultante.

       ${parametro%parola}
       ${parametro%%parola}
              Rimozione del suffisso corrispondente al modello.  La parola è espansa  per  produrre  un  modello
              proprio come nell'espansione di percorso.  Se il modello corrisponde a una parte finale del valore
              espanso di parametro, il risultato dell'espansione è il valore espanso di  parametro  con  il  più
              corto  dei  modelli  corrispondenti  cancellato  (nel  caso  di ``%'' ) o il più lungo dei modelli
              corrispondenti cancellato (nel caso di ``%%'').  Se parametro è @ o *, l'operazione  di  rimozione
              del  modello è applicata a ognuno dei parametri posizionali, e l'espansione è la lista risultante.
              Se parametro è una variabile array con indice @ o *,  l'operazione  di  rimozione  del  modello  è
              applicata a ognuno degli elementi dell'array, e l'espansione è la lista risultante.

       ${parametro/modello/stringa}
              Sostituzione   di   modello.    Il  modello  è  espanso  per  produrre  un  modello  proprio  come
              nell'espansione di percorso.  Parametro è espanso e il suo valore  più  lungo  che  corrisponde  a
              modello  è  sostituito con stringa.  Se modello comincia con /, tutte le corrispondenze di modello
              sono sostituite con stringa.  Normalmente viene  sostituita  solo  la  prima  corrispondenza.   Se
              modello comincia con #, deve corrispondere all'inizio del valore espanso di parametro.  Se modello
              inizia con %, deve corrispondere alla fine del valore espanso di parametro.  Se stringa  è  nulla,
              le  corrispondenze  di  modello  sono  cancellate  e la / che segue modello può essere omessa.  Se
              parametro è @ o *, l'operazione di sostituzione è applicata a ognuno dei parametri posizionali,  e
              l'espansione  è  la  lista  risultante.   Se  parametro  è  una  variabile array con indice @ o *,
              l'operazione di sostituzione è applicata a ognuno degli elementi dell'array, e l'espansione  è  la
              lista risultante.

       ${parametro^modello}
       ${parametro^^modello}
       ${parametro,modello}
       ${parametro,,modello}
              Modifica  minuscolo/maiuscolo.   Questa espansione modifica in parametro i caratteri alfabetici da
              minuscolo a maiuscolo e viceversa.  Il modello viene espanso per produrre un modello, proprio come
              nell'espansione   del  nome  di  percorso.   L'operatore  ^  converte  le  lettere  minuscole  che
              corrispondono a modello in lettere maiuscole; l'operatore , converte le lettere maiuscole  trovate
              in lettere minuscole.  Le espansioni ^^ e ,, convertono ogni carattere trovato nel valore espanso;
              le espansioni ^ e , trovano e convertono solo il primo carattere nel valore espanso.  Se modello è
              omesso, è trattato come un ?, che individua tutti i caratteri.  Se parametro è @ o *, l'operazione
              di conversione minuscole/maiuscole è applicata a  tutti  i  parametri  posizionali  successivi,  e
              l'espansione  è  la  lista  risultante.  Se parametro è una variabile array indicizzata con @ o *,
              l'operazione di  conversione  minuscole/maiuscole  è  applicata  a  tutti  i  successivi  elementi
              dell'array, e l'espansione è la lista risultante.

   Sostituzione di comando
       La  sostituzione  di  comando permette che l'output di un comando rimpiazzi il nome del comando.  Vi sono
       due forme:

              $(comando)
       o
              `comando`

       Bash effettua l'espansione eseguendo il comando e rimpiazzando la sostituzione di comando con lo standard
       output  del  comando, con ogni newline finale cancellato.  I newline intermedi non vengono cancellati, ma
       possono essere rimossi durante la suddivisione in parole.  La sostituzione di  comando  $(cat  file)  può
       essere sostituita dall'equivalente ma più veloce $(< file).

       Quando  è  usata  la  forma  di  sostituzione in vecchio stile con gli apici rovesciati, la barra inversa
       conserva il suo significato letterale tranne quando è seguita da $, `, o \.  Il  primo  apice  rovesciato
       non  preceduto  da  una  barra  inversa  fa terminare la sostituzione di comando.  Quando si usa la forma
       $(comando), tutti i caratteri tra le parentesi formano il comando; nessuno è considerato speciale.

       La sostituzione di comando può essere nidificata.  Per nidificare quando si usa la forma  con  gli  apici
       rovesciati, bisogna far precedere gli apici rovesciati più interni con una barra inversa di protezione.

       Se  la  sostituzione appare tra virgolette, la suddivisione in parole e l'espansione di percorso non sono
       effettuate sui risultati.

   Espansione aritmetica
       L'espansione aritmetica permette la valutazione di una  espressione  aritmetica  e  la  sostituzione  del
       risultato.  Il formato per l'espansione aritmetica è:

              $((espressione))

       L'  espressione  è  trattata  come se fosse tra virgolette, ma le virgolette dentro le parentesi non sono
       trattate in modo speciale.  Tutti i token dell'espressione sono assoggettati a espansione  di  parametro,
       espansione  di  stringa,  sostituzione  di comando e rimozione dei caratteri di quotatura.  Le espansioni
       aritmetiche possono essere nidificate.

       Il calcolo è effettuato in accordo con le regole elencate più avanti sotto  VALUTAZIONE  ARITMETICA.   Se
       espressione  non  è  valida,  bash  stampa un messaggio che indica l'errore e non viene effettuata alcuna
       sostituzione.

   Sostituzione di processo
       La sostituzione di processo è supportata su sistemi che supportano le  named  pipe  (FIFO)  o  il  metodo
       /dev/fd per denominare i file aperti.  Essa prende la forma di <(lista) o >(lista).  La lista di processi
       è eseguita con il suo input o output connesso a un FIFO o ad alcuni file in /dev/fd.  Il nome  di  questo
       file  è  passato  come argomento al comando corrente come risultato dell'espansione.  Se è usata la forma
       >(lista), la scrittura sul file fornisce input per la lista.  Se è  usata  la  forma  <(lista),  il  file
       passato come argomento dovrebbe essere letto per ottenere l'output di lista.

       Su   sistemi   che  la  supportano,  la  sostituzione  di  processo  è  effettuata  allo  stesso  momento
       dell'espansione di parametro e di variabile, della sostituzione di comando e dell'espansione aritmetica.

   Suddivisione in parole
       La shell scandisce il risultato dell'espansione di  parametro,  sostituzione  di  comando  ed  espansione
       aritmetica che non si trovano tra virgolette, per eseguire la suddivisione in parole.

       La  shell tratta ogni carattere di IFS come un delimitatore, e suddivide in parole, in corrispondenza con
       uno di questi caratteri, i risultati delle altre espansioni.  Se il valore di IFS non è  impostato  o  il
       suo  valore  è  esattamente  <space><tab><newline>,  il valore predefinito, sequenze di <space>, <tab>, e
       <newline> all'inizio e alla fine dei risultati delle precedenti espansioni vengono ignorate, e  qualsiasi
       sequenza  di  caratteri  IFS, che non siano all'inizio o alla fine, servono per delimitare le parole.  Se
       IFS ha un valore diverso da quello predefinito, allora sequenze di caratteri di spaziatura  space  e  tab
       sono ignorate all'inizio e alla fine della parola, se il carattere di spaziatura è presente nel valore di
       IFS (un carattere di spaziatura IFS).  Qualunque carattere in IFS che non è un  carattere  di  spaziatura
       IFS,  insieme  con  qualsiasi  carattere di spaziatura IFS adiacente, delimita un campo.  Una sequenza di
       caratteri di spaziatura IFS è anche trattata come un delimitatore.  Se il valore  di  IFS  è  nullo,  non
       avviene alcuna suddivisione in parole.

       Argomenti  esplicitamente  nulli(""  or '') sono conservati.  Argomenti non quotati implicitamente nulli,
       risultanti dall'espansione di parametri con valore nullo, sono rimossi.  Se un parametro con valore nullo
       è espanso fra virgolette, è considerato un argomento nullo e viene rimosso.

       È da notare che se non avviene alcuna espansione non viene effettuata alcuna suddivisione.

   Espansione di percorso
       Dopo  la  suddivisione  in  parole,  a meno che non sia stata impostata l'opzione -f, bash scandisce ogni
       parola alla ricerca di caratteri *, ?  e [.  Se uno di questi caratteri è presente, allora  la  parola  è
       considerata  come  un  modello,  e  sostituita  con  una lista, in ordine alfabetico, di nomi di file che
       corrispondono al modello.  Se nessun nome di file corrispondente viene  trovato,  e  l'opzione  di  shell
       nullglob  non è abilitata, la parola è lasciata inalterata.  Se l'opzione nullglob è impostata, e nessuna
       corrispondenza è trovata, la parola è rimossa.  Se l'opzione di shell failglob è impostata, e  non  viene
       trovata alcuna corrispondenza, viene stampato un messaggio di errore e il comando non viene eseguito.  Se
       l'opzione di shell nocaseglob è abilitata, il confronto è effettuato senza distinzione  fra  maiuscole  e
       minuscole nei caratteri alfabetici.  Quando un modello è usato per l'espansione di percorso, il carattere
       ``.''  all'inizio di un nome o immediatamente dopo una barra [/] deve essere confrontato  esplicitamente,
       a  meno  che l'opzione di shell globdot non sia impostata.  Quando si confronta un percorso, il carattere
       barra [/] deve sempre essere confrontato esplicitamente.  Negli altri casi, il  carattere  ``.''   non  è
       trattato  in  modo  speciale.   Vedere la descrizione di shopt più avanti sotto COMANDI INCORPORATI DELLA
       SHELL per una descrizione delle opzioni di shell nocaseglob, nullglob, failglob e dotglob.

       La variabile di shell GLOBIGNORE può  essere  usata  per  restringere  la  serie  di  nomi  di  file  che
       corrispondono  a un modello.  Se GLOBIGNORE è impostato, ogni nome di file da confrontare che corrisponde
       anche a uno dei modelli in GLOBIGNORE è rimosso dalla lista dei nomi che  corrispondono  al  modello.   I
       nomi  di file ``.''  e ``..''  sono sempre ignorati quando GLOBIGNORE è impostato e non nullo.  Comunque,
       impostare GLOBIGNORE a un valore non nullo ha l'effetto di abilitare l'opzione di shell dotglob, così  da
       cercare  una  corrispondenza  con tutti gli altri nomi di file che iniziano con un ``.''  Per ottenere il
       comportamento (usato in precedenti versioni) di ignorare i nomi di file che iniziano con ``.'',  si  deve
       fare  un  modello  ``.*''   in  GLOBIGNORE.   L'opzione  dotglob  è  disabilitata quando GLOBIGNORE viene
       annullato.

       Modelli di ricerca / espressioni regolari

       Ogni carattere che appare in un modello (espressione regolare),  tranne  quelli  speciali  descritti  qui
       sotto,  corrisponde  a  se  stesso.  Il carattere NULL non può far parte di un'espressione regolare.  Una
       barra inversa segnala come speciale il carattere che segue;  la  barra  inversa  è  ignorata  durante  il
       confronto.   I  caratteri  speciali  del  modello devono essere racchiusi tra apici se si vuole che siano
       considerati così come sono scritti.

       I caratteri speciali nelle espressioni regolari hanno i seguenti significati:

              *      Corrisponde a qualsiasi stringa, inclusa la stringa nulla.  Quando è abilitata l'opzione di
                     shell  globstar,  e  in un contesto di espansione del nome di percorso viene usato *, due *
                     adiacenti usati come unico criterio di ricerca  troveranno  tutti  i  file  e  zero  o  più
                     directory  e sottodirectory.  Se seguito da un /, due * adiacenti troveranno solo directory
                     e sottodirectory.
              ?      Corrisponde a qualsiasi carattere singolo.
              [...]  Corrisponde a uno qualsiasi dei caratteri racchiusi fra parentesi quadre.   Una  coppia  di
                     caratteri  separati  da  un  segno meno denota un' espressione di intervallo, che individua
                     ogni carattere che si trova tra quei due caratteri, essi stessi inclusi, usando la sequenza
                     di  ordinamento della localizzazione corrente.  Se il primo carattere che segue il [ è un !
                     o un ^ allora qualsiasi carattere non specificato è ritenuto corrispondente.   L'ordine  di
                     ordinamento dei caratteri nell'espressione di intervallo è determinato dalla localizzazione
                     corrente e dal valore della variabile di shell LC_COLLATE, se impostata.  Un -  può  essere
                     specificato  includendolo  come  primo  o  ultimo  carattere nella lista.  Una ] può essere
                     specificata includendola come primo carattere nella lista.

                     All'interno di [ e ], possono essere specificate classi di  caratteri  usando  la  sintassi
                     [:classe:], dove classe è una delle seguenti classi definite nello standard POSIX:
                     alnum alpha ascii blank cntrl digit graph lower print punct space upper word xdigit
                     Una  classe  di  caratteri  trova una corrispondenza con qualsiasi carattere appartenente a
                     quella classe.  La classe di caratteri word individua lettere, cifre e il carattere _ .

                     All'interno di [ e ] può essere specificata una  classe  di  equivalenza  con  la  sintassi
                     [=c=],  che  individua  tutti i caratteri con lo stesso grado di ordinamento (come definito
                     dalla localizzazione corrente) del carattere c.

                     All'interno di [ e ] la sintassi [.symbol.] individua il simbolo di ordinamento symbol.

       Se l'opzione di shell extglob è abilitata col comando incorporato  shopt,  vengono  riconosciuti  diversi
       operatori estesi che descrivono modelli.  Nella descrizione seguente, una pattern-list è una lista di uno
       o più modelli separati da una |.  Possono essere formati modelli composti usando uno o più  dei  seguenti
       sotto-modelli:

              ?(pattern-list)
                     Individua zero o una occorrenza dei modelli specificati
              *(pattern-list)
                     Individua zero o più occorrenze dei modelli specificati
              +(pattern-list)
                     Individua una o più occorrenze dei modelli specificati
              @(pattern-list)
                     Individua uno dei modelli specificati
              !(pattern-list)
                     Individua qualsiasi cosa eccetto uno dei modelli specificati

   Rimozione dei caratteri di quotatura
       Dopo  le  precedenti  espansioni, tutte le occorrenze non quotate dei caratteri \, ' e " non originate da
       una delle espansioni di cui sopra sono rimosse.

RIDIREZIONE

       Prima che un comando sia eseguito, i suoi input e output possono essere  ridiretti  usando  una  speciale
       notazione interpretata dalla shell.  La ridirezione può anche essere usata per aprire e chiudere file per
       l'ambiente di esecuzione della shell corrente.  I seguenti operatori di ridirezione possono  precedere  o
       apparire  in qualsiasi posizione all'interno di un comando semplice o possono venire dopo un comando.  Le
       ridirezioni sono elaborate nell'ordine in cui compaiono, da sinistra a destra.

       Ogni ridirezione che può essere preceduta da un numero di descrittore di file può invece essere preceduta
       da  una  parola della forma {varname}.  In questo caso, per ogni operatore di ridirezione ad eccezione di
       >&- e <&-, la shell allocherà un descrittore di file maggiore di 10 e lo assegnerà a varname.  Se  >&-  o
       <&- è preceduto da {varname}, il valore di varname definisce il descrittore di file da chiudere.

       Nelle  seguenti  descrizioni,  se  il  numero  di  descrittore  di  file  è  omesso, e il primo carattere
       dell'operatore di ridirezione è <, la ridirezione si riferisce allo standard input (descrittore  di  file
       0).   Se  il primo carattere dell'operatore di ridirezione è >, la ridirezione si riferisce allo standard
       output (descrittore di file 1).

       La parola  che  segue  l'operatore  di  ridirezione  nelle  seguenti  descrizioni,  se  non  diversamente
       specificato,  è  sottoposta  a  espansione  delle parentesi graffe, espansione della tilde, espansione di
       parametro, sostituzione  di  comando,  espansione  aritmetica,  rimozione  dei  caratteri  di  quotatura,
       espansione  dei  percorsi  e  suddivisione  in  parole.   Se  si  espande a più di una parola bash dà una
       segnalazione di errore.

       È da notare che l'ordine delle ridirezioni è significativo.  Per esempio, il comando

              ls > dirlist 2>&1

       dirige sia lo standard output che lo standard error sul file dirlist, mentre il comando

              ls 2>&1 > dirlist

       dirige solo lo standard output sul file dirlist,  poiché  lo  standard  error  è  stato  duplicato  dallo
       standard output prima che lo standard output fosse ridiretto su dirlist.

       Bash  manipola  parecchi nomi di file specialmente quando sono usati in ridirezioni, come descritto nella
       tavola seguente:

              /dev/fd/fd
                     Se fd è un intero valido, il descrittore di file fd è duplicato.
              /dev/stdin
                     Il descrittore di file 0 è duplicato.
              /dev/stdout
                     Il descrittore di file 1 è duplicato.
              /dev/stderr
                     Il descrittore di file 2 è duplicato.
              /dev/tcp/host/porta
                     Se host è un nome di host valido o un indirizzo Internet, e porta è  un  numero  intero  di
                     porta  o  il  nome  di  un  servizio,  bash  tenta  di aprire una connessione TCP al socket
                     corrispondente.
              /dev/udp/host/porta
                     Se host è un nome di host valido o un indirizzo Internet, e porta è  un  numero  intero  di
                     porta  o  il  nome  di  un  servizio,  bash  tenta  di aprire una connessione UDP al socket
                     corrispondente.

       L'insuccesso nell'aprire o creare un file determina l'insuccesso della ridirezione.

       Ridirezioni con descrittori di file maggiori di 9 dovrebbero essere usate con attenzione, poiché  possono
       entrare in conflitto coi descrittori di file usati internamente dalla shell.

   Ridirezione dell'input
       La ridirezione dell'input fa sì che il file il cui nome risulta dall'espansione di parola venga aperto in
       lettura sul descrittore di file n, o come standard input (descrittore di file 0) se n non è specificato.

       Il formato generico per ridirigere l'input è:

              [n]<parola

   Ridirezione dell'output
       La ridirezione dell'output fa sì che il file il cui nome risulta dall'espansione di parola  venga  aperto
       in  scrittura  sul  descrittore  di  file  n,  o  come standard output (descrittore di file 1) se n non è
       specificato.  Se il file non esiste viene  creato;  se  esiste  viene  sovrascritto,  come  se  fosse  di
       dimensione zero.

       Il formato generico per ridirigere l'output è:

              [n]>parola

       Se  l'operatore  di ridirezione è >, e l'opzione noclobber del comando incorporato set è stata abilitata,
       la ridirezione non ha successo se il file il cui nome risulta dall'espansione di parola esiste  ed  è  un
       file  regolare.   Se  l'operatore  di  ridirezione  è  >|,  o  l'operatore di ridirezione è > e l'opzione
       noclobber del comando incorporato set non è  abilitata,  la  ridirezione  è  tentata  anche  se  il  file
       denominato da parola esiste.

   Accodare l'output ridiretto
       La  ridirezione  dell'output  in questo modalità fa sì che il file il cui nome risulta dall'espansione di
       parola venga aperto per accodare sul descrittore di file n, o sullo standard output (descrittore di  file
       1) se n non è specificato.  Se il file non esiste viene creato.

       Il formato generico per accodare l'output è:

              [n]>>parola

   Ridirezione di standard output e standard error
       Con  questo  costrutto,  sia  l'uscita  dello  standard  output  (descrittore di file 1) che quella dello
       standard error (descrittore di file 2) sono ridirette sul file il cui  nome  risulta  dall'espansione  di
       parola.

       Vi sono due formati per ridirigere lo standard output e lo standard error:

              &>parola
       e
              >&parola

       Delle due forme, la prima è quella preferita.  Questo è semanticamente equivalente a

              >parola 2>&1

   Accodare Standard Output e Standard Error
       Con  questo  costrutto,  sia  l'uscita  dello  standard  output  (descrittore di file 1) che quella dello
       standard error (descrittore di file 2) viene accodata al file il cui nome è l'espansione di parola.

       Il formato per accodare lo standard output e lo standard error è:

              &>>parola

       Questo è semanticamente equivalente a

              >>parola 2>&1

   Here Document
       Questo tipo di ridirezione istruisce la shell a leggere l'input dall'input  corrente,  finché  non  venga
       incontrata  una  riga  contenente  solo delimitatore (senza alcun carattere blank dopo la parola stessa).
       Tutte le righe lette fino a quel punto sono quindi usate come standard input per un comando.

       Il formato degli here-document è il seguente:

              <<[-]parola
                      here-document
              delimitatore

       Nessuna espansione di parametro, sostituzione di comando, espansione aritmetica o espansione di  percorso
       è  effettuata  su  parola.  Se un carattere qualsiasi in parola è quotato, il delimitatore è il risultato
       della rimozione dei caratteri di quotatura da parola, e le righe nel here-document non  vengono  espanse.
       Se  parola  non  è  quotata,  tutte  le  righe del here-document sono soggette a espansione di parametro,
       sostituzione di comando ed espansione aritmetica.  In quest'ultimo caso, la coppia \<newline> è ignorata,
       e \ deve essere usata per quotare i caratteri \, $, e `.

       Se  l'operatore  di  ridirezione è <<-, tutti i caratteri tab a inizio riga sono eliminati dalle righe in
       input e dalla riga che contiene delimitatore.  Questo permette che un here-document dentro uno script  di
       shell possa essere indentato in maniera naturale.

   Here String
       Una variante degli here document, il formato è:

              <<<parola

       La parola è espansa ed è passata al comando come suo standard input.

   Duplicazione dei descrittori di file
       L'operatore di ridirezione

              [n]<&parola

       è  usato  per  duplicare  descrittori  di  file  di  input.   Se parola si espande in una o più cifre, il
       descrittore di file indicato da n è fatto diventare una copia di quel descrittore di file.  Se  le  cifre
       in  parola  non  specificano  un  descrittore  di  file  aperto  per  l'input,  si  verifica un errore di
       ridirezione.  Se parola risulta essere, dopo l'espansione, -, il descrittore di file n viene chiuso.   Se
       n non è specificato, è usato lo standard input (descrittore di file 0).

       L'operatore

              [n]>&parola

       è  usato  in modo analogo per duplicare i descrittori di file di output.  Se n non è specificato, è usato
       lo standard output (descrittore di file 1).  Se le cifre in parola non specificano un descrittore di file
       aperto  in output, si verifica un errore di ridirezione.  Come caso speciale, se n è omesso, e parola non
       si espande a una o più cifre, lo standard output e lo standard error sono  ridiretti  come  descritto  in
       precedenza.

   Muovere i descrittori di file
       L'operatore di ridirezione

              [n]<&cifra-

       muove  il  descrittore di file cifra al descrittore di file n, o allo standard input (descrittore di file
       0) se n non è specificato.  cifra è chiuso dopo essere stato duplicato in n.

       Analogamente l'operatore di ridirezione

              [n]>&cifra-

       muove il descrittore di file cifra al descrittore di file n, o allo standard output (descrittore di  file
       1) se n non è specificato.

   Apertura di descrittori di file per lettura e scrittura
       L'operatore di ridirezione

              [n]<>parola

       fa  sì  che il file il cui nome è l'espansione di parola venga aperto sia in lettura che in scrittura sul
       descrittore di file n, o sul descrittore di file 0 se n non è specificato.  Se il file non esiste,  viene
       creato.

ALIAS

       Gli  alias  consentono  di sostituire una stringa con una parola se usata come prima parola di un comando
       semplice.  La shell mantiene una lista di alias che possono essere impostati  e  rimossi  con  i  comandi
       incorporati  alias  e  unalias  (si veda COMANDI INCORPORATI DELLA SHELL più avanti).  La prima parola di
       ogni comando, se non quotata, viene controllata per vedere se a essa è associato un alias.  Se  è  questo
       il  caso,  la  parola  è  sostituita  dal  valore  dell'alias.   I  caratteri  /,  $, ` e =, e ognuno dei
       metacaratteri della shell o i caratteri di quotatura elencati sopra non possono apparire in  un  nome  di
       alias.  Il testo da sostituire può contenere qualunque input valido per la shell, inclusi i metacaratteri
       della shell.  La prima parola del testo così sostituito è controllata per vedere se  contiene  alias,  ma
       una  parola  che  coincide con l'alias che si sta espandendo non viene espansa una seconda volta.  Questo
       significa che si può far interpretare ls come  ls  -F,  per  esempio,  e  bash  non  tenta  di  espandere
       ulteriormente  il testo così sostituito.  Se l'ultimo carattere del valore di un alias è un blank, allora
       la successiva parola di comando che segue l'alias è pure controllata per l'espansione di alias.

       Gli alias sono creati ed elencati con il comando alias e rimossi con il comando unalias.

       Non vi è alcun meccanismo per usare argomenti nel testo da sostituire.  Se servono  degli  argomenti,  si
       dovrà usare una funzione di shell (si veda.  FUNZIONI più avanti).

       Gli  alias  non  sono  espansi  quando  la  shell  non  è  interattiva,  a  meno  che  l'opzione di shell
       expand_aliases non sia  impostata  mediante  shopt  (si  veda  la  descrizione  di  shopt  sotto  COMANDI
       INCORPORATI DELLA SHELL più avanti).

       Le regole che riguardano la definizione e l'uso degli alias possono facilmente generare confusione.  Bash
       legge sempre almeno una riga completa di input prima di eseguire qualsiasi comando di quella  riga.   Gli
       alias  sono  espansi  quando un comando è letto, non quando è eseguito.  Perciò, una definizione di alias
       che appaia sulla stessa riga che contiene già un altro comando non ha effetto fino  a  che  non  è  stata
       letta la successiva riga di input.  I comandi che seguono la definizione di un alias su una data riga non
       sono influenzati da un nuovo alias.  Questo comportamento è un problema anche quando sono eseguite  delle
       funzioni.   Gli alias sono espansi quando viene letta una definizione di funzione, non quando la funzione
       è eseguita, poiché una definizione di funzione è essa stessa un comando composto.  Come conseguenza,  gli
       alias  definiti  in  una funzione sono disponibili solo dopo che quella funzione è eseguita.  Per maggior
       sicurezza, conviene porre sempre le definizioni di alias su una  riga  separata  e  non  usare  alias  in
       comandi composti.

       Quasi  a  tutti  gli  effetti,  le  finalità per cui sono usati gli alias possono essere raggiunte usando
       invece funzioni di shell.

FUNZIONI

       Una funzione di shell, definita come descritto prima in GRAMMATICA DELLA SHELL, immagazzina una serie  di
       comandi  per  una  futura  esecuzione.   Quando  il nome di una funzione di shell è usato come un nome di
       comando semplice, la lista di comandi associati con quel nome di funzione viene  eseguita.   Le  funzioni
       sono  eseguite  nel  contesto  della  shell corrente; nessun nuovo processo è creato per interpretarle (a
       differenza di quanto avviene eseguendo uno script  di  shell).   Quando  una  funzione  è  eseguita,  gli
       argomenti  passati  alla  funzione  costituiscono  i  parametri  posizionali  della  funzione stessa.  Il
       parametro speciale # viene aggiornato per riflettere il cambiamento.   Il  parametro  speciale  0  rimane
       inalterato.   Il  primo  elemento  della  variabile  FUNCNAME  è impostato al nome della funzione durante
       l'esecuzione della funzione.

       Tutti gli altri aspetti dell'ambiente di esecuzione della shell sono identici tra una funzione e  il  suo
       chiamante  con  queste  eccezioni:  la  gestione  dei  segnali DEBUG e RETURN (si veda la descrizione del
       comando incorporato trap sotto COMANDI INCORPORATI DELLA SHELL più avanti), i quali non sono ereditati  a
       meno  che  alla funzione sia stato dato l'attributo trace (si veda la descrizione del comando incorporato
       declare più avanti) o l'opzione di  shell  -o  functrace  sia  stata  abilitata  per  mezzo  del  comando
       incorporato  set  (nel qual caso tutte le funzioni ereditano la gestione dei segnali DEBUG e RETURN) e la
       gestione del segnale ERR non viene ereditata a  meno  che  l'opzione  di  shell  -o  errtrace  sia  stata
       abilitata.

       Variabili locali alla funzione possono essere dichiarate con il comando incorporato local.  Di solito, le
       variabili e i loro valori sono condivisi tra la funzione e il suo chiamante.

       La variabie FUNCNEST, se impostata a un valore numerico maggiore di 0, definisce un  livello  massimo  di
       nidificazione.   Le  invocazioni  di  funzione eccedenti tale limite provocano l'interruzione dell'intero
       comando.

       Se il comando incorporato return è eseguito in una funzione, la funzione termina e l'esecuzione  riprende
       con  il  comando  che  viene  subito  dopo  la  chiamata di funzione.  Qualsiasi comando associato con la
       gestione del segnale RETURN viene eseguito prima di riprendere l'esecuzione.  Quando una funzione termina
       i  valori  dei  parametri  posizionali  e il parametro speciale # sono ripristinati ai valori che avevano
       prima dell'esecuzione della funzione.

       I nomi delle funzioni e le definizioni possono essere elencati con l'opzione -f dei  comandi  incorporati
       declare  o typeset.  L'opzione -F di declare o typeset elenca solo i nomi di funzione (e opzionalmente il
       file d'origine e il numero di riga, se l'opzione di shell extdebug è  abilitata).   Le  funzioni  possono
       essere  esportate,  in  modo che le subshell automaticamente le trovino già definite con l'opzione -f del
       comando incorporato export.  Una definizione di funzione può essere cancellata usando  l'opzione  -f  del
       comando  incorporato  unset.   Da  notare che funzioni e variabili di shell aventi lo stesso nome possono
       risultare in più elementi con lo stesso nome nell'ambiente  passato  alle  shell  figlie.   Bisogna  fare
       attenzione ai casi in cui questo può causare un problema.

       Le  funzioni possono essere ricorsive.  La variabile FUNCNEST può essere usata per limitare la profondità
       dello stack della chiamata di funzione e restringere il  numero  di  invocazioni  della  funzione.   Come
       impostazione predefinita, nessun limite è posto sul numero di chiamate ricorsive.

VALUTAZIONE ARITMETICA

       La  shell  permette  di  calcolare  espressioni  aritmetiche,  sotto certe circostanze (si veda i comandi
       incorporati let e declare e Espansione aritmetica).  Il calcolo viene fatta  usando  interi  a  larghezza
       fissa,  senza controllo di supero della capacità, sebbene la divisione per 0 sia intercettata e segnalata
       come errore.  Gli operatori e la loro precedenza, associatività e valori, sono gli stessi del  linguaggio
       C.   La  seguente  lista  di  operatori  è  raggruppata per operatori di uguale livello di precedenza.  I
       livelli sono elencati in ordine di precedenza decrescente.

       id++ id--
              post-incremento e post-decremento di una variabile
       ++id --id
              pre-incremento e pre-decremento di una variabile
       - +    meno e più unari
       ! ~    negazione logica e "bit a bit"
       **     elevamento a potenza
       * / %  moltiplicazione, divisione, modulo
       + -    addizione, sottrazione
       << >>  scorrimento "bit a bit" a sinistra e a destra
       <= >= < >
              confronto
       == !=  uguaglianza e differenza
       &      AND "bit a bit"
       ^      OR esclusivo "bit a bit"
       |      OR "bit a bit"
       &&     AND logico
       ||     OR logico
       expr?expr:expr
              operatore condizionale
       = *= /= %= += -= <<= >>= &= ^= |=
              assegnamento
       expr1 , expr2
              virgola

       Le variabili di shell possono essere usate come operandi; l'espansione di parametro  è  effettuata  prima
       della  valutazione dell'espressione.  All'interno di un'espressione, le variabili di shell possono essere
       referenziate anche per nome senza bisogno di usare la sintassi di espansione di parametro.  Una variabile
       di shell nulla o rimossa ha valore 0 se referenziata per nome senza l'uso della sintassi di espansione di
       parametro.  Il valore di una variabile è valutato come un'espressione aritmetica quando è referenziata, o
       quando a una variabile a cui è stato dato l'attributo integer con declare -i è stato assegnato un valore.
       Un valore nullo viene considerato come 0.  Non c'è bisogno di dichiarare come  intera  una  variabile  di
       shell per poterla usare in un'espressione.

       Le  costanti  che  iniziano  per 0 sono interpretate come numeri ottali.  Uno 0x o 0X iniziale si usa per
       indicare numeri esadecimali.  Altrimenti, i numeri prendono la forma [base#]n, dove l'opzionale  base   è
       un  numero decimale tra 2 e 64 che definisce la base aritmetica, e n è un numero espresso in quella base.
       Se base# è omessa, allora è usata la base 10.  Le cifre maggiori di 9 sono  rappresentate  dalle  lettere
       minuscole,  dalle  lettere maiuscole, e da @ e _, in quest'ordine.  Se la base è minore o uguale a 36, le
       lettere minuscole e maiuscole possono essere usate indifferentemente per  rappresentare  numeri  compresi
       tra 10 e 35.

       Gli operatori sono valutati in ordine di precedenza.  Le subespressioni tra parentesi sono valutate prima
       e possono prevalere sulle regole di precedenza di cui sopra.

ESPRESSIONI CONDIZIONALI

       Le espressioni condizionali sono usate dal comando composto [[ e dai comandi incorporati  test  e  [  per
       verificare  attributi di file ed effettuare comparazioni aritmetiche e fra stringhe.  Le espressioni sono
       formate dalle seguenti primitive unarie o binarie.  Se qualsiasi argomento di file di una delle primitive
       è della forma /dev/fd/n, il descrittore di file n viene controllato.  Se l'argomento di file di una delle
       primitive è  uno  tra  /dev/stdin,  /dev/stdout  o  /dev/stderr,  il  descrittore  di  file  0,  1  o  2,
       rispettivamente, viene controllato.

       Se  non  diversamente  specificato,  le  primitive  che operano su file utilizzano eventuali collegamenti
       simbolici e operano sul file puntato dal collegamento simbolico, invece che  sul  collegamento  simbolico
       stesso.

       Quando  vengono  usati  con [[, gli operatori < e > ordinano lessicograficamente usando la localizzazione
       corrente.  Il comando test usa l'ordinamento ASCII.

       -a file
              Vero se file esiste.
       -b file
              Vero se file esiste ed è un file speciale a blocchi.
       -c file
              Vero se file esiste ed è un file speciale a caratteri.
       -d file
              Vero se file esiste ed è una directory.
       -e file
              Vero se file esiste.
       -f file
              Vero se file esiste ed è un file normale.
       -g file
              Vero se file esiste ed è impostato il suo bit set-group-id.
       -h file
              Vero se file esiste ed è un collegamento simbolico.
       -k file
              Vero se file ha il suo ``sticky'' bit impostato.
       -p file
              Vero se file esiste ed è una named pipe (FIFO).
       -r file
              Vero se file esiste ed è leggibile.
       -s file
              Vero se file esiste ed è di dimensione maggiore di zero byte.
       -t fd  Vero se il descrittore di file fd è aperto e si tratta di un terminale.
       -u file
              Vero se file esiste ed è impostato il suo bit set-user-id.
       -w file
              Vero se file esiste ed è scrivibile.
       -x file
              Vero se file esiste ed è eseguibile.
       -G file
              Vero se file esiste ed è di proprietà del gruppo effettivo dell'utente.
       -L file
              Vero se file esiste ed è un collegamento simbolico.
       -N file
              Vero se file esiste ed è stato modificato dall'ultima volta che è stato letto.
       -O file
              Vero se file esiste ed è di proprietà dell'id utente effettivo.
       -S file
              Vero se file esiste ed è un socket.
       file1 -ef file2
              Vero se file1 e file2 fanno riferimento allo stesso dispositivo e agli stessi numeri di inode.
       file1 -nt file2
              Vero se file1 è più recente (come data di modifica) di file2 o se file1 esiste e file2 no.
       file1 -ot file2
              Vero se file1 è più vecchio di file2, o se file2 esiste e file1 no.
       -o optname
              Vero se l'opzione di shell  optname  è  abilitata.   Si  veda  l'elenco  delle  opzioni  sotto  la
              descrizione dell'opzione -o al comando incorporato set più avanti.
       -v varname
              Vero se la variabile di shell varname è impostata (le è stato assegnato un valore).
       -z stringa
              Vero se la lunghezza di stringa è zero.
       stringa
       -n stringa
              Vero se la lunghezza di stringa è diversa da zero.

       stringa1 == stringa2
       stringa1 = stringa2
              Vero  se  le stringhe sono uguali.  Col comando test dovrebbe essere usato = per conformità con lo
              standard POSIX.

       stringa1 != stringa2
              Vero se le stringhe non sono uguali.

       stringa1 < stringa2
              Vero se, lessicograficamente, stringa1 precede come ordine stringa2.

       stringa1 > stringa2
              Vero se, lessicograficamente, stringa1 segue come ordine stringa2.

       arg1 OP arg2
              OP è uno tra -eq, -ne, -lt, -le, -gt, o -ge.  Questi operatori aritmetici binari risultano veri se
              arg1  è,  rispettivamente,  uguale,  non  uguale,  minore, minore o uguale, maggiore, o maggiore o
              uguale ad arg2.  Arg1 e arg2 possono essere numeri interi positivi o negativi.

ESPANSIONE DI COMANDO SEMPLICE

       Quando viene eseguito un comando semplice la  shell  effettua  le  seguenti  espansioni,  assegnamenti  e
       ridirezioni, da sinistra a destra.

       1.     Le parole che l'analizzatore ha individuato essere assegnamenti di variabile (quelle che precedono
              il nome di comando) oppure ridirezioni vengono messe da parte per un'elaborazione successiva.

       2.     Le parole che non sono assegnamenti di variabile  o  ridirezioni  sono  espanse.   Se  è  presente
              qualche  parola  dopo  l'espansione, la prima parola è considerata essere il nome del comando e le
              rimanenti parole come argomenti dello stesso.

       3.     Le ridirezioni sono effettuate come descritte prima sotto RIDIREZIONE.

       4.     Il testo dopo = in  ogni  assegnamento  di  variabile  è  sottoposto  a  espansione  della  tilde,
              sostituzione  di  comando,  espansione  aritmetica e rimozione dei caratteri di quotatura prima di
              venir assegnato alla variabile.

       Se non risulta nessun nome di comando, gli assegnamenti di  variabile  influenzano  l'ambiente  di  shell
       corrente.   Altrimenti,  le  variabili  sono aggiunte all'ambiente del comando eseguito senza influenzare
       l'ambiente di shell corrente.  Se uno qualsiasi degli assegnamenti tenta di assegnare  un  valore  a  una
       variabile in sola lettura, si verifica un errore e il comando è terminato con uno stato diverso da zero.

       Se  non  risulta nessun nome di comando le ridirezioni sono effettuate ma senza influenzare l'ambiente di
       shell corrente.  Se si verifica un errore di ridirezione il comando è terminato con uno stato diverso  da
       zero.

       Se  è  rimasto  un  nome  di  comando  dopo  l'espansione,  l'esecuzione  procede  come  descritto sotto.
       Altrimenti, il comando esce.  Se una delle espansioni conteneva una sostituzione di comando lo  stato  di
       uscita  del  comando  è  lo  stato d'uscita dell'ultima sostituzione di comando eseguita.  Se non ci sono
       state sostituzioni di comando il comando esce con uno stato d'uscita di zero.

ESECUZIONE DI UN COMANDO

       Dopo che un comando è stato suddiviso in parole, se esso risulta essere un  comando  semplice  e  di  una
       lista opzionale di argomenti, sono eseguite le seguenti azioni.

       Se il nome del comando non contiene barra [/], la shell tenta di localizzarla.  Se esiste una funzione di
       shell con quel nome, viene invocata quella funzione, come descritto prima in FUNZIONI.  Se  il  nome  non
       corrisponde  a  una  funzione,  la shell lo cerca nella lista dei comandi incorporati della shell.  Se ne
       viene trovato uno corrispondente, viene invocato quel comando incorporato.

       Se il nome non è né una funzione di shell né un comando incorporato, e non  contiene  alcuna  barra  [/],
       bash  cerca  tra gli elementi della variabile PATH una directory che contenga un file eseguibile con quel
       nome.  Bash usa una tabella hash [indicizzata] per ricordare i percorsi completi dei file eseguibili  (si
       veda  hash  sotto  COMANDI  INCORPORATI DELLA SHELL più avanti).  Una ricerca completa nelle directory in
       PATH è effettuata solo se il comando non viene  trovato  nella  tabella  hash.   Se  la  ricerca  non  ha
       successo,  la  shell  cerca  una  funzione di shell, già definita, chiamata command_not_found_handle.  Se
       questa funzione esiste, viene invocata col comando originale e gli argomenti di  quest'ultimo  come  suoi
       argomenti,  e lo stato d'uscita della funzione diventa lo stato d'uscita della shell.  Se quella funzione
       non è definita, la shell stampa un messaggio di errore e ritorna uno stato d'uscita di 127.

       Se la ricerca ha successo, o se il nome del comando contiene uno o più barre  [/],  la  shell  esegue  il
       programma indicato in un ambiente di esecuzione separato.  L'argomento 0 è impostato al nome specificato,
       e i rimanenti argomenti del comando sono impostati agli argomenti specificati, se presenti.

       Se quest'esecuzione non ha successo perché il file non è in formato  eseguibile  e  il  file  non  è  una
       directory,  si  suppone  che  sia  uno  script di shell, cioè un file che contiene comandi di shell, ed è
       generata una subshell per eseguirlo.  Questa subshell reinizializza se stessa, così che l'effetto è  come
       se  fosse  stata  invocata una nuova shell per gestire lo script, con la differenza che la lista dei nomi
       completi di comando ricordati dalla shell genitrice (si veda hash più avanti  sotto  COMANDI  INCORPORATI
       DELLA SHELL) sono disponibili anche alla shell figlia.

       Se  il  programma  è  un  file  che inizia con #!, il resto della prima riga del file stesso specifica un
       interprete da invocare.  La shell esegue l'interprete specificato su sistemi operativi che non gestiscono
       questo formato eseguibile essi stessi.  Gli argomenti per l'interprete consistono di un singolo argomento
       opzionale che segue il nome dell'interprete  sulla  prima  riga  del  programma,  seguito  dal  nome  del
       programma, seguito dagli argomenti forniti al comando, se ve ne sono.

AMBIENTE DI ESECUZIONE DEL COMANDO

       La shell ha un ambiente di esecuzione, costituito da:

       •      file  aperti  ereditati  dalla shell all'invocazione, come modificati dalle ridirezioni fornite al
              comando incorporato exec

       •      la corrente directory di lavoro come impostata da cd,  pushd  o  popd,  o  ereditata  dalla  shell
              all'invocazione

       •      la  maschera  del  modo  di  creazione  dei  file  come impostata da umask o ereditata dalla shell
              genitrice

       •      i segnali da intercettare impostati da trap

       •      parametri di shell che sono stati impostati da un assegnamento di variabile o con set, o ereditati
              dalla shell genitrice nell'ambiente

       •      funzioni di shell definite durante l'esecuzione o ereditate dalla shell genitrice nell'ambiente

       •      opzioni abilitate all'invocazione (sia in modo predefinito che con argomenti da riga di comando) o
              da set

       •      opzioni abilitate da shopt

       •      alias di shell definiti da alias

       •      vari ID di processo, inclusi quelli dei job in background, il valore di $$ e il valore di PPID

       Quando un comando semplice, diverso da una funzione incorporata o da una funzione  di  shell,  dev'essere
       eseguito,  viene  invocato  in  un  ambiente  di esecuzione separato che comprende tutto quello che viene
       illustrato qui di seguito.  Se non altrimenti notato, i valori sono ereditati dalla shell.

       •      i file aperti della shell, più qualsiasi modificazione e aggiunta specificata dalle ridirezioni al
              comando

       •      la directory di lavoro corrente

       •      la maschera del modo di creazione dei file

       •      variabili  di  shell  e  funzioni  dichiarate esportabili, insieme alle variabili esportate per il
              comando, passate nell'ambiente

       •      i segnali da intercettare come da comando trap dalla shell  sono  riportati  ai  valori  ereditati
              dalla shell genitrice, e i segnali ignorati dalla shell vengono ignorati

       Un  comando  invocato in quest'ambiente separato non può influenzare l'ambiente di esecuzione della shell
       [genitrice].

       Sostituzione di comando, comandi raggruppati fra parentesi  e  comandi  asincroni  sono  invocati  in  un
       ambiente  di  subshell  che  è  un  duplicato  dell'ambiente  di  shell,  con  l'eccezione  che i segnali
       intercettati  dalla  shell  sono  riportati  ai  valori  che  la  shell  eredita  dalla  shell  genitrice
       all'invocazione.   I  comandi  incorporati  che  sono  invocati come parte di una pipeline sono anch'essi
       eseguiti in un ambiente di subshell.  Modifiche fatte all'ambiente di subshell  non  possono  influenzare
       l'ambiente di esecuzione della shell [genitrice].

       Le  subshell  create per eseguire sostituzioni di comando ereditano il valore dell'opzione -e dalla shell
       genitrice.  Quando non è in modalità posix, bash toglie l'opzione -e in tali subshell.

       Se un comando è invocato da un & e il job-control non è attivo, lo  standard  input  predefinito  per  il
       comando  è  il  file vuoto /dev/null.  Altrimenti il comando invocato eredita i descrittori di file della
       shell chiamante come modificati dalle ridirezioni.

AMBIENTE

       Quando viene invocato un programma gli viene dato un array di stringhe chiamato insieme  delle  variabili
       di ambiente.  Questa è una lista di coppie nome-valore, della forma nome=valore.

       La  shell  consente  di  manipolare  l'ambiente  in molti modi.  All'invocazione, la shell esamina il suo
       ambiente e crea un parametro per ogni nome trovato, marcandolo automaticamente per  essere  esportato  ai
       processi  figli.   I  comandi eseguiti ereditano l'ambiente.  I comandi export e declare -x permettono di
       aggiungere o togliere dall'ambiente parametri e funzioni.  Se il valore di un parametro d'ambiente  viene
       modificato,  il  nuovo  valore diventa parte dell'ambiente, sostituendo il valore precedente.  L'ambiente
       ereditato da qualsiasi comando eseguito è costituito dall'ambiente iniziale della  shell,  i  cui  valori
       possono essere modificati nella shell, diminuiti di ogni coppia rimossa dal comando unset, e aumentati da
       ogni aggiunta attraverso i comandi export e declare-x.

       L'ambiente per qualsiasi comando semplice o funzione  può  essere  ampliato  temporaneamente  premettendo
       degli  assegnamenti di parametro al comando stesso, come descritto prima in PARAMETRI.  Queste istruzioni
       di assegnamento influenzano solo l'ambiente utilizzato da quel comando.

       Se è impostata l'opzione -k (si veda il comando incorporato set più avanti), tutti  gli  assegnamenti  di
       parametro  sono  resi  disponibili  nell'ambiente  del comando, non solo quelli che precedono il nome del
       comando.

       Quando bash invoca un comando esterno, la variabile _ viene impostata al nome completo del  percorso  del
       comando, e passato a quel comando nel suo ambiente.

STATO D'USCITA

       Lo stato d'uscita di un comando eseguito è il valore ritornato dalla chiamata di sistema waitpid o da una
       funzione equivalente.  Gli stati d'uscita ricadono nell'intervallo fra 0 e 255 anche  se,  come  spiegato
       più  avanti, la shell può usare valori superiori a 125 in casi particolari.  Anche gli stati d'uscita dei
       comandi incorporati della shell e dei comandi composti sono circoscritti in questo intervallo.   In  casi
       particolari la shell usa valori speciali per indicare specifiche situazioni di insuccesso.

       Ai  fini  della  shell,  un comando che termina con uno stato d'uscita zero ha avuto successo.  Uno stato
       d'uscita pari a zero indica successo.  Uno stato d'uscita diverso  da  zero  indica  errore.   Quando  un
       comando termina su un segnale fatale N, bash usa il valore di 128+N come stato d'uscita.

       Se  un  comando  non viene trovato, il processo figlio creato per eseguirlo ritorna uno stato pari a 127.
       Se un comando viene trovato ma non è eseguibile lo stato di ritorno è 126.

       Se un comando non ha successo a causa di un errore  durante  l'espansione  o  la  ridirezione,  lo  stato
       d'uscita è maggiore di zero.

       I  comandi  incorporati della shell restituiscono uno stato di 0 (vero) in caso di successo, e diverso da
       zero (falso) in caso di errore durante l'esecuzione.  Tutti i comandi incorporati restituiscono uno stato
       d'uscita di 2 per indicare l'uso scorretto.

       Bash  stessa  ritorna lo stato d'uscita dell'ultimo comando eseguito, a meno che non avvenga un errore di
       sintassi, nel qual caso essa esce con un valore diverso da zero.  Si veda anche  il  comando  incorporato
       exit più avanti.

SEGNALI

       Quando  bash  è  interattiva, in assenza di ogni segnale da intercettare col comando trap, ignora SIGTERM
       (così che kill 0 non uccide una shell interattiva), e SIGINT viene intercettato e gestito  (così  che  il
       comando  incorporato  wait  è  interrompibile).   In  tutti  i  casi,  bash ignora SIGQUIT.  Se si usa il
       job-control, bash ignora SIGTTIN, SIGTTOU, e SIGTSTP.

       I comandi non incorporati invocati da bash hanno i gestori di  segnali  impostati  sui  valori  ereditati
       dalla shell dalla sua genitrice.  Quando non si usa il job-control, i comandi asincroni ignorano SIGINT e
       SIGQUIT.  in aggiunta a questi gestori ereditati.  I comandi eseguiti come risultato di una  sostituzione
       di comando ignorano i segnali di job-control generati da tastiera SIGTTIN, SIGTTOU, e SIGTSTP.

       Come  comportamento  predefinito,  la shell esce al ricevimento di un SIGHUP.  Prima di uscire, una shell
       interattiva ri-invia un segnale SIGHUP a tutti i job (richiesti tramite  job-control),  in  esecuzione  o
       sospesi.   Ai  job  sospesi  viene  inviato  un segnale SIGCONT per essere sicuri che ricevano il segnale
       SIGHUP.  Per prevenire l'invio del segnale da parte  della  shell  a  un  particolare  job,  quest'ultimo
       dovrebbe essere rimosso dalla tabella dei job col comando incorporato disown (si veda COMANDI INCORPORATI
       DELLA SHELL più avanti) o contrassegnato per non ricevere SIGHUP usando disown -h.

       Se l'opzione di shell huponexit è stata impostata con shopt, bash invia un segnale SIGHUP a tutti  i  job
       quando una shell di login interattiva esce.

       Se  bash  è  in  attesa  che  un  comando  finisca  e  riceve  un  segnale per il quale è stato impostata
       un'intercettazione di segnale, il comando relativo alla gestione  del  segnale  viene  eseguito  solo  al
       termine  del  comando.   Quando bash è in attesa della fine di un comando asincrono attraverso il comando
       incorporato wait, la ricezione di un segnale per il quale un'intercettazione di segnale è stata impostata
       fa  sì  che  il comando incorporato wait termini immediatamente con uno stato d'uscita maggiore di 128, e
       immediatamente dopo viene innescata la gestione del segnale intercettato.

JOB-CONTROL

       Il termine job-control si riferisce alla capacità di fermare (sospendere) selettivamente l'esecuzione  di
       processi e continuare (riprendere) la loro esecuzione in seguito.  Tipicamente, un utente utilizza questa
       possibilità attraverso un'interfaccia interattiva costituita congiuntamente dal driver del terminale  del
       kernel del sistema operativo e da bash.

       La  shell associa un job a ogni pipeline.  Essa mantiene una tabella dei job correntemente in esecuzione,
       che può essere visualizzata con il comando jobs.   Quando  bash  avvia  un  job  in  modo  asincrono  (in
       background), stampa una riga tipo:

              [1] 25647

       che  indica  che  questo job è il job numero 1 e che l'ID di processo dell'ultimo processo nella pipeline
       associata a questo job è 25647.  Tutti i processi in una singola pipeline fanno parte dello  stesso  job.
       Bash usa l'astrazione job come base per il job-control.

       Per  facilitare  l'implementazione  dell'interfaccia  utente  per  il job-control, il sistema mantiene la
       nozione di ID del gruppo di processi del terminale corrente.  I  membri  di  questo  gruppo  di  processo
       (processi il cui ID del gruppo di processo è uguale all'ID del gruppo di processo del terminale corrente)
       ricevono segnali generati da tastiera, come SIGINT.  Si dice  che  questi  processi  sono  in  primopiano
       (foreground  -  oppure sincroni).  I processi in background (sullo sfondo - oppure asincroni) sono quelli
       il cui ID del gruppo di processo differisce da quello  del  terminale;  tali  processi  sono  immuni  dai
       segnali  generati da tastiera.  Solo ai processi in primo piano è permesso di leggere o, se l'utente l'ha
       specificato con stty tostop, scrivere sul terminale.  Ai processi nascosti che  tentano  di  leggere  dal
       terminale  (o  scriverci sopra quando stty tostop è in azione) è inviato un segnale SIGTTIN (SIGTTOU) dal
       driver del terminale del kernel, che, se non intercettato, sospende il processo.

       Se il sistema operativo sul quale bash è in esecuzione supporta  il  job-control,  bash  è  in  grado  di
       utilizzarlo.   Battere  il  carattere  di sospensione (tipicamente ^Z, Control-Z) mentre un processo è in
       esecuzione, provoca la sospensione di quel processo e  restituisce  il  controllo  a  bash.   Battere  il
       carattere di sospensione ritardata (tipicamente ^Y, Control-Y) provoca la sospensione del processo quando
       questo tenta di leggere input dal terminale, e la restituzione del controllo a bash.  Si può poi cambiare
       lo  stato di questo job, usando il comando bg per continuarlo in background, il comando fg per riportarlo
       in foreground, o il comando kill per farlo terminare.  Un ^Z ha effetto immediatamente,  e  ha  l'effetto
       collaterale  di  causare  la  perdita  dell'output  in  sospeso  e  del "type ahead" (caratteri immessi a
       terminale ma non ancora passati al programma).

       Vi sono diversi modi per riferirsi a un job nella shell.  Il carattere % designa  una  specifica  di  job
       (jobspec).   Un job con numero n può essere indicato come %n.  Un job può anche essere indicato usando un
       prefisso del nome usato per avviarlo, o usando una sottostringa che appare nella  sua  riga  di  comando.
       Per  esempio,  %ce  si  riferisce  a un job ce sospeso.  Se un prefisso corrisponde a più di un job, bash
       restituisce un messaggio di errore.  L'uso di %?ce, d'altra parte, indica qualsiasi job che  contiene  la
       stringa  ce  nella sua riga di comando.  Se la sottostringa corrisponde a più di un job, bash restituisce
       un messaggio di errore.  I simboli %% e %+ si riferiscono alla nozione  della  shell  del  job  corrente,
       ossia  l'ultimo  job  sospeso  mentre  era  in foreground o avviato in background.  Il job precedente può
       essere referenziato usando %-.  Se c'è un solo job, %+  e  %-  possono  essere  usati  entrambi  per  far
       riferimento  a quel job.  Nell'output che riguarda i job (per esempio, l'output del comando jobs), il job
       corrente è sempre segnalato con un +, ed il job  precedente  con  un  -.   Un  singolo  %  (senza  alcuna
       specificazione associata) è pure un modo per designare il job corrente.

       La  semplice  menzione di un job può essere usata per riportarlo in foreground: %1 è un sinonimo per ``fg
       %1'', che porta il job 1 dal background al foreground.  Nello stesso modo, ``%1 &'' riprende l'esecuzione
       del job 1 in background, ossia equivale a ``bg %1''.

       La  shell  viene notificata immediatamente ogni volta che un job cambia stato.  Normalmente, bash aspetta
       finché non deve stampare un prompt prima di informare dei cambiamenti nello stato di un job, in  modo  da
       non  interrompere  alcun  altro  output.   Se  l'opzione -b del comando incorporato set è impostata, bash
       riporta tali cambiamenti immediatamente.  Delle  eventuali  istruzioni  di  intercettazione  del  segnale
       SIGCHLD viene eseguita per ogni processo figlio che esce.

       Se  si  tenta di uscire da bash mentre vi sono dei job sospesi(o, se è stata abilitata l'opzione di shell
       checkjobs usando il  comando  incorporato  shopt,  in  esecuzione),  la  shell  stampa  un  messaggio  di
       avvertimento e, se viene abilitata l'opzione checkjobs, elenca i job e i loro stati.  Si può quindi usare
       il comando jobs per controllare il loro stato.  Se si fa un secondo tentativo per uscire senza  immettere
       alcun altro comando, non si riceve più il messaggio di avvertimento e ogni job sospeso viene terminato.

STRINGHE DI PROMPT

       Quando  eseguita  interattivamente,  bash  mostra  il  prompt primario PS1 quando è pronta per leggere un
       comando, e il prompt secondario PS2 quando è in attesa di altro input per completare  un  comando.   Bash
       permette  di  personalizzare  queste  stringhe  di prompt inserendo un certo numero di caratteri speciali
       preceduti dalla barra inversa che sono decodificati come segue:
              \a     un carattere ASCII di campanello (07)
              \d     la data nel formato "Giorno-della-settimana Mese Giorno" (ad es., "Tue May 26")
              \D{formato}
                     il formato viene passato a strftime(3) e il risultato è inserito nella stringa  di  prompt;
                     un  formato  vuoto  genera una rappresentazione di data/ora specifica della localizzazione.
                     Le parentesi graffe sono obbligatorie
              \e     un carattere ASCII di escape (033)
              \h     il nome dell'host fino al primo `.'
              \H     il nome dell'host
              \j     il numero di job attualmente gestiti dalla shell
              \l     il basename del terminale in cui è eseguita la shell
              \n     newline [su una nuova riga]
              \r     carriage return [a inizio riga]
              \s     il nome della shell, il basename di $0 (la parte che segue l'ultima barra [/])
              \t     l'ora corrente nel formato HH:MM:SS 24 ore
              \T     l'ora corrente nel formato HH:MM:SS 12 ore
              \@     l'ora corrente nel formato am/pm 12 ore
              \A     l'ora corrente nel formato HH:MM 24 ore
              \u     il nome-utente dell'utente corrente
              \v     la versione di bash (ad es., 2.00)
              \V     la release di bash, versione + livello di patch (ad es., 2.00.0)
              \w     la directory di lavoro corrente, con $HOME abbreviato da una tilde  (usa  il  valore  della
                     variabile PROMPT_DIRTRIM)
              \W     il basename della directory di lavoro corrente, con $HOME abbreviato con una tilde
              \!     il numero nella cronologia del comando attuale
              \#     il numero di comando del comando attuale
              \$     se l'UID effettivo è 0, un #, altrimenti un $
              \nnn   il carattere [ASCII] che corrisponde al numero ottale nnn
              \\     una barra inversa
              \[     marca  l'inizio  di  una  sequenza  di  caratteri  non stampabili, che può essere usata per
                     includere nel prompt una sequenza di controllo del terminale
              \]     marca la fine di una sequenza di caratteri non stampabili

       Il numero del comando e il  numero  nella  cronologia  sono  generalmente  differenti:  il  numero  della
       cronologia  di un comando è la sua posizione nella lista della cronologia, la quale può includere comandi
       preesistenti nel file di cronologia (si veda CRONOLOGIA più avanti), mentre il numero del  comando  è  la
       posizione nella sequenza dei comandi eseguiti durante la corrente sessione di shell.  Dopo che la stringa
       è decodificata, essa è  espansa  attraverso  l'espansione  di  parametro,  la  sostituzione  di  comando,
       l'espansione  aritmetica e la rimozione dei caratteri di quotatura, secondo quanto specificato dal valore
       dell'opzione di shell promptvars (si veda  più  avanti  la  descrizione  del  comando  shopt  in  COMANDI
       INCORPORATI DELLA SHELL).

READLINE

       Questa  è  la libreria che gestisce la lettura dell'input quando si usa una shell interattiva, a meno che
       non si specifichi l'opzione --noediting all'invocazione della shell.  La modifica di riga è  usata  anche
       quando viene passata l'opzione -e al comando incorporato read.  Come comportamento predefinito, i comandi
       per l'editor della riga comandi sono simili a quelli di Emacs.  È anche  disponibile  un'interfaccia  per
       editor  di  riga in stile vi.  La modifica di riga può essere abilitata in ogni momento con le opzioni -o
       emacs o -o vi del comando incorporato set (si veda COMANDI INCORPORATI  DELLA  SHELL  più  avanti).   Per
       chiudere l'editor di riga dopo l'esecuzione della shell utilizzare l'opzione +o emacs o +o vi del comando
       incorporato set.

   Notazione readline
       In questa sezione, si usa la notazione in stile Emacs per indicare  i  tasti  da  battere.   I  tasti  di
       controllo  sono  indicati da C-tasto, per esempio, C-n significa Control-N.  In modo simile, i meta tasti
       sono indicati da M-tasto, cioè M-x significa Meta-X.  (Sulle tastiere senza un tasto meta, M-x  significa
       ESC  x,  cioè,  si  preme  il  tasto  Escape  e  poi  il tasto x.  Questo rende ESC il meta prefisso.  La
       combinazione M-C-x significa ESC-Control-x, ossia si preme il tasto Escape poi si tiene il tasto  Control
       mentre si preme il tasto x).

       Ai  comandi readline possono essere specificati argomenti numerici, che normalmente sono dei contatori di
       ripetizione.  A volte, tuttavia, è il segno dell'argomento a essere significativo.  Passando un argomento
       negativo  a  un  comando  che  agisce  in  avanti  (ad es., kill-line), il comando agisce nella direzione
       opposta.  I comandi il cui comportamento con gli argomenti è diverso da questo sono indicati più avanti.

       Quando un comando è descritto come eliminazione di testo,  il  testo  cancellato  viene  salvato  per  un
       possibile  riutilizzo  futuro (yanking).  Il testo eliminato viene salvato in un kill-ring.  Eliminazioni
       consecutive provocano l'accumulazione del testo in una unità, che può  essere  recuperata  tutta  in  una
       volta.  Comandi che non eliminano testo separano parti di testo nel kill-ring.

   Inizializzazione di Readline
       Readline  è  personalizzata inserendo comandi in un file di inizializzazione (il file inputrc ).  Il nome
       di questo file è preso dal valore della variabile INPUTRC.  Se questa variabile non è definita il  valore
       predefinito è ~/.inputrc.  Quando un programma che usa la libreria readline viene avviato, viene letto il
       file di inizializzazione, e vengono impostate le associazioni di tasti e assegnate le variabili.  Ci sono
       solo  alcuni  costrutti  base  consentiti  nel  file d'inizializzazione di readline.  Le righe vuote sono
       ignorate.  Le righe che iniziano con un # sono commenti.   Le  righe  che  iniziano  con  un  $  indicano
       costrutti condizionali.  Le altre righe indicano associazioni di tasti e impostazioni di variabili.

       Le  associazioni  di  tasti predefiniti possono essere cambiate con un file inputrc.  Altri programmi che
       usano questa libreria possono aggiungere i loro propri comandi e associazioni.

       Per esempio, porre

              M-Control-u: universal-argument
       o
              C-Meta-u: universal-argument
       nel file inputrc farebbe eseguire a M-C-u il comando della readline universal-argument.

       Sono riconosciuti i seguenti nomi simbolici di carattere: RUBOUT, DEL, ESC, LFD,  NEWLINE,  RET,  RETURN,
       SPC, SPACE e TAB.

       In  aggiunta al nome del comando, readline consente che a un tasto corrisponda una stringa che è inserita
       quando quel tasto è premuto (una macro).

   Associazioni di tasti readline
       La sintassi per il controllo delle associazioni dei tasti nel file inputrc è semplice.  Tutto quel che  è
       richiesto  è  il nome del comando o il testo di una macro e una sequenza di tasti alla quale dovrà essere
       associato.  Il nome può essere specificato in  uno  di  due  modi:  come  nome  simbolico  di  un  tasto,
       eventualmente con i prefissi Meta- o Control-, o come una sequenza di tasti.

       Quando  si  usa  la  forma nome-tasto:nome-funzione o macro, nome-tasto è il nome di un tasto in inglese.
       Per esempio:

              Control-u: universal-argument
              Meta-Rubout: backward-kill-word
              Control-o: "> output"

       Negli esempi precedenti, C-u viene collegato alla funzione universal-argument, M-DEL viene collegato alla
       funzione  backward-kill-word,  e  C-o viene collegato all'esecuzione della macro indicata sul lato destro
       (cioè, inserire il testo ``> output'' nella riga).

       Nella seconda forma, "sequenza-tasti":nome-funzione o  macro,  sequenza-tasti  differisce  da  nome-tasto
       visto  sopra,  per  il fatto che la stringa che denota un'intera sequenza di tasti può essere specificata
       ponendo la sequenza fra virgolette.  Alcuni tasti di protezione (escape) nello stile  GNU  Emacs  possono
       essere usati, come nei seguenti esempi, ma i nomi simbolici dei caratteri non si possono utilizzare.

              "\C-u": universal-argument
              "\C-x\C-r": re-read-init-file
              "\e[11~": "Function Key 1"

       In  questo esempio, C-u viene ancora collegato alla funzione universal-argument.  C-x C-r viene collegato
       alla funzione re-read-init-file, e ESC [ 1 1 ~ viene collegato all'inserimento del testo  ``Function  Key
       1''.

       L'insieme completo delle sequenze di protezione (escape) in stile GNU Emacs è
              \C-    prefisso control
              \M-    prefisso meta
              \e     un carattere di escape
              \\     barra inversa
              \"     il carattere "
              \'     il carattere '

       In  aggiunta  alle sequenze di protezione che iniziano col tasto escape in stile GNU Emacs, è disponibile
       un secondo insieme di sequenze di protezione che iniziano con la barra inversa:
              \a     avviso (segnale acustico)
              \b     backspace
              \d     cancella [delete - tasto Del o Canc]
              \f     form feed [salto pagina]
              \n     newline [nuova linea]
              \r     carriage return [a inizio linea]
              \t     tabulazione orizzontale
              \v     tabulazione verticale
              \nnn   il carattere a otto bit il cui valore è rappresentato dal valore ottale nnn (da una  a  tre
                     cifre ottali)
              \xHH   il  carattere a otto bit il cui valore è rappresentato dal valore esadecimale HH (una o due
                     cifre esadecimali)

       Quando si inserisce il testo di una macro, apostrofi o virgolette devono essere usati  per  indicare  una
       definizione  di  macro.   Un  testo  non quotato si suppone che sia un nome di funzione.  Nel corpo della
       macro, i segni di protezione \ idescritti prima vengono espansi.  La barra inversa quota qualsiasi  altro
       carattere nel testo della macro, inclusi " e '.

       Bash  permette  di  mostrare  o  modificare le associazioni correnti dei tasti di readline con il comando
       incorporato bind.  La modalità di modifica può essere cambiata durante l'uso interattivo usando l'opzione
       -o del comando incorporato set (si veda COMANDI INCORPORATI DELLA SHELL più avanti).

   Variabili readline
       Readline   ha  delle  variabili  che  possono  essere  usate  per  personalizzare  ulteriormente  il  suo
       comportamento.  Una variabile può essere impostata nel file inputrc con un'istruzione della forma

              set nome-di-variabile valore

       Tranne dove diversamente indicato, le variabili di readline possono  avere  i  valori  On  o  Off  (senza
       distinzione  fra  maiuscole e minuscole).  I nomi di variabile non riconosciuti vengono ignorati.  Quando
       viene letto un valore di variabile, i valori vuoti o nulli,  "on"  (senza  distinzione  fra  maiuscole  e
       minuscole) o "1" sono equivalenti a On.  Tutti gli altri valori sono equivalenti a Off.  Le variabili e i
       loro valori predefiniti sono:

       bell-style (audible)
              Controlla cosa succede se  readline  vuole  usare  il  segnalatore  acustico  del  terminale.   Se
              impostato  a  none,  readline  non  emette alcun segnale.  Se impostato a visible, readline usa un
              segnalatore visivo se disponibile.   Se  impostato  a  audible,  readline  tenta  di  attivare  il
              segnalatore acustico del terminale.
       bind-tty-special-chars (On)
              Se  impostato a On, readline tenta di associare i caratteri di controllo trattati in modo speciale
              dal driver del terminale nel kernel agli equivalenti degli stessi come descritti da readline.
       comment-begin (``#'')
              La stringa che è inserita quando è eseguito il comando insert-comment.  Questo comando è associato
              a M-# in modalità comandi Emacs e a # in modalità comandi di vi.
       completion-ignore-case (Off)
              Se  impostato  a  On, readline effettua l'individuazione dei nomi di file e il completamento senza
              distinguere le lettere maiuscole dalle lettere minuscole.
       completion-prefix-display-length (0)
              La lunghezza in caratteri del prefisso comune di  una  lista  di  possibili  completamenti  che  è
              visualizzata  senza modifiche.  Quando è impostata a un valore maggiore di zero, i prefissi comuni
              più lunghi di questo valore sono rimpiazzati da un'ellissi quando vengono  visualizzati  possibili
              completamenti.
       completion-query-items (100)
              Questo  determina  a  che  punto  interpellare l'utente per visualizzare i possibili completamenti
              generati dal comando possible-completions.  Può essere impostato a un  numero  intero  maggiore  o
              uguale  a  zero.   Se il numero di possibili completamenti è maggiore o uguale al valore di questa
              variabile, all'utente viene chiesto se desidera o meno vederli; altrimenti essi sono semplicemente
              elencati sul terminale.
       convert-meta (On)
              Se  impostato  a  On,  readline converte i caratteri con l'ottavo bit uguale a 1 a una sequenza di
              caratteri ASCII eliminando l'ottavo bit e aggiungendo come prefisso un carattere di protezione (in
              pratica, usando l'escape come prefisso meta).
       disable-completion (Off)
              Se  impostato a On, readline inibisce il completamento della parola.  I caratteri di completamento
              saranno inseriti nella riga come se fossero stati mappati come self-insert.
       editing-mode (emacs)
              Controlla se readline parte con un  insieme  di  associazioni  di  tasti  simile  a  Emacs  o  vi.
              editing-mode (modalità di modifica) può essere impostato a emacs o a vi.
       echo-control-characters (On)
              Quando  è  impostato  a  On,  sui  sistemi  operativi  che  lo suppportano, readline visualizza un
              carattere corrispondente a un segnale generato dalla tastiera.
       enable-keypad (Off)
              Quando impostato a On, readline tenta di abilitare il tastierino  numerico  se  viene  utilizzato.
              Alcuni sistemi richiedono questo per abilitare i tasti-freccia.
       enable-meta-key (On)
              Quando  è  impostato  a  On,  readline tenta di abilitare qualsiasi meta tasto modificatore che il
              terminale dichiara di supportare quando viene chiamato.  Su molti terminali il meta tasto è  usato
              per inviare caratteri a otto bit.
       expand-tilde (Off)
              Se  impostato  a  On, l'espansione della tilde è effettuata quando readline tenta il completamento
              della parola.
       history-preserve-point (Off)
              Se impostato a On, il codice che implementa la cronologia tenta di piazzare il cursore  nel  punto
              in cui si trovava su ogni riga della cronologia visualizzata con previous-history o next-history.
       history-size (0)
              Definisce  il  numero massimo di voci salvate nella cronologia.  Se impostato a zero, il numero di
              registrazioni è illimitato.
       horizontal-scroll-mode (Off)
              Quando impostato a On, richiede a readline di usare una sola riga per la visualizzazione,  facendo
              scorrere l'input in orizzontale su una sola riga dello schermo quando essa risulti più lunga della
              larghezza dello schermo, invece che andando a capo su una nuova riga.
       input-meta (Off)
              Se impostato a On, readline abilita l'input a otto bit (cioè, non  toglie  il  bit  più  alto  dai
              caratteri  che  legge),  indipendentemente  da quello che il terminale dichiara di supportare.  Il
              nome meta-flag è un sinonimo per questa variabile.
       isearch-terminators (``C-[C-J'')
              Una stringa di caratteri che fa terminare una ricerca incrementale senza eseguire  successivamente
              il  carattere  come  se  fosse  un  comando.   Se a questa variabile non è stato dato un valore, i
              caratteri ESC and C-J fanno terminare una ricerca incrementale.
       keymap (emacs)
              Imposta la mappa corrente dei tasti di readline.  Il set dei nomi validi per le mappe dei tasti  è
              emacs,  emacs-standard,  emacs-meta,  emacs-ctlx,  vi, vi-command e vi-insert.  vi è equivalente a
              vi-command; emacs è equivalente a emacs-standard.  Il valore predefinito è  emacs;  il  valore  di
              editing-mode determina anche la mappa dei tasti predefiniti.
       mark-directories (On)
              Se impostata a On, ai nomi delle directory completate è aggiunta una barra [/] alla fine.
       mark-modified-lines (Off)
              Se  impostato a On, le righe della cronologia che sono state modificate sono mostrate precedute da
              un asterisco (*).
       mark-symlinked-directories (Off)
              Se impostato a On, i nomi completati che sono collegamenti simbolici a directory hanno  una  barra
              [/] alla fine (se richiesto tramite mark-directories).
       match-hidden-files (On)
              Questa  variabile,  se  impostata a On, fa sì che readline mostri anche i file i cui nomi iniziano
              con un `.' (file nascosti) quando effettua il completamento del nome di file.  Se impostata a Off,
              il `.' iniziale dev'essere fornito dall'utente come parte del nome di file da completare.
       menu-complete-display-prefix (Off)
              Se  impostato  a  On,  il  completamento  del  menù  visualizza  il prefisso comune della lista di
              possibili completamenti (che può essere vuota) prima di scorrere ciclicamente la lista.
       output-meta (Off)
              Se impostato a On, readline mostra i caratteri con l'ottavo bit impostato direttamente,  piuttosto
              che con una sequenza di protezione avente come prefisso meta.
       page-completions (On)
              Se  impostato  a  On,  readline  usa  un paginatore interno simile a more per mostrare i possibili
              completamenti una schermata alla volta.
       print-completions-horizontally (Off)
              Se impostato a On, readline mostra i completamenti ordinati in ordine alfabetico  orizzontalmente,
              piuttosto che dall'alto in basso.
       revert-all-at-newline (Off)
              Se  impostato  a  On,  readline  annulla  tutte  le modifiche alle righe della cronologia prima di
              ritornare, quando viene eseguito accept-line.  In modo  predefinito,  le  righe  della  cronologia
              possono essere modificate e mantengono liste dei singoli anullamenti mediante chiamate a readline.
       show-all-if-ambiguous (Off)
              Questo cambia il comportamento predefinito delle funzioni di completamento.  Se impostato a On, le
              parole che hanno più di un possibile completamento provocano la  visualizzazione  immediata  delle
              coincidenze invece che l'attivazione del segnalatore acustico.
       show-all-if-unmodified (Off)
              Questo  cambia  il  comportamento  predefinito delle funzioni di completamento in maniera simile a
              show-all-if-ambiguous.  Se impostato a On, le parole che hanno più di un  possibile  completamento
              senza  alcun  possibile  completamento  parziale (ovvero i possibili completamenti non hanno alcun
              prefisso  in  comune)  sono  elencate  immediatamente  invece  che  provocare  l'attivazione   del
              segnalatore acustico.
       skip-completed-text (Off)
              Se impostato a On, altera il comportamento predefinito del completamento quando viene inserita una
              corrispondenza nella riga.  È attivo solo quando si  effettua  il  completamento  a  metà  di  una
              parola.   Se  abilitato,  readline  non  inserisce,  dopo il completamento della parola, caratteri
              provenienti dal completamento che corrispondono ai caratteri della parola  da  completare  che  si
              trovano  dopo  il  cursore;  in  tal  modo  porzioni  di parola che seguono il cursore non vengono
              duplicati.
       visible-stats (Off)
              Se impostato a On, un carattere che denota un tipo di file come riportato da stat(2) è accodato al
              nome di file durante l'elencazione dei possibili completamenti.

   Costrutto condizionale di readline
       Readline  implementa  un  servizio  simile,  nello  spirito, a quello della compilazione condizionale nel
       preprocessore C, e che permette di effettuare associazioni di tasti e impostazioni di variabili  in  base
       al risultato di test.  Vi sono tre direttive di controllo usate.

       $if    Il  costrutto  $if  permette che le associazioni siano fatte in base alla modalità di modifica, al
              terminale in uso o all'applicazione che fa uso di readline.  Il testo da  verificare  arriva  fino
              alla fine della riga; nessun carattere che lo delimiti è richiesto.

              mode   La forma mode= della direttiva $if è usata per verificare se readline è in modo emacs o vi.
                     Questo può essere usato in congiunzione  con  il  comando  set  keymap,  per  esempio,  per
                     impostare  le  associazioni  delle  mappe  dei tasti di emacs-standard e emacs-ctlx solo se
                     readline è avviata in modo emacs.

              term   La forma term= può essere usata per includere  associazioni  di  tasti  specifiche  per  un
                     terminale,  magari  per  associare  le  sequenze  di  tasti  emesse  dai tasti funzione dei
                     terminali.  La parola a destra dell' = viene confrontata con il nome completo del terminale
                     e  la  parte del nome del terminale che precede il primo -.  Questo permette, ad esempio, a
                     sun di trovare una corrispondenza sia con sun che con sun-cmd.

              application
                     Il costrutto application è usato per includere impostazioni specifiche per un'applicazione.
                     Ogni  programma  che  usa  la  libreria readline imposta il nome applicazione, e un file di
                     inizializzazione può poi fare un test per un particolare valore.  Questo può  essere  usato
                     per associare sequenze di tasti a funzioni utili per uno specifico programma.  Per esempio,
                     il comando seguente aggiunge una sequenza di tasti che quota la parola corrente o la parola
                     precedente in bash:

                     $if Bash
                     # Quota la parola corrente o precedente
                     "\C-xq": "\eb\"\ef\""
                     $endif

       $endif Questo comando, come si è visto nell'esempio precedente, fa terminare un comando $if.

       $else  I comandi in questa parte della direttiva $if sono eseguiti se il test non risulta verificato.

       $include
              Questa  direttiva  prende  un  unico nome di file come argomento e legge comandi e associazioni da
              quel file.  Per esempio, la seguente direttiva legge /etc/inputrc:

              $include  /etc/inputrc

   Ricerca
       Readline è dotato di comandi per cercare nella cronologia dei comandi (si  veda  CRONOLOGIA  più  avanti)
       righe  contenenti  una  stringa  specifica.   Ci  sono  due  modalità  di  ricerca:  incrementale  e non-
       incrementale.

       La ricerca incrementale inizia prima che l'utente abbia  finito  di  immettere  la  stringa  di  ricerca.
       Mentre  ogni  carattere  della  stringa  di  ricerca  viene battuto, readline mostra la prima linea dalla
       cronologia che corrisponde alla stringa battuta finora.  Una ricerca incrementale richiede  solamente  il
       numero  minimo  di  caratteri  necessari per trovare l'elemento della cronologia desiderato.  I caratteri
       presenti  nel  valore  della  variabile  isearch-terminators  sono  usati  per  delimitare  una   ricerca
       incrementale.   Se  a quella variabile non è stato assegnato un valore, i caratteri di Escape e Control-J
       fanno arrestare una ricerca incrementale.  Control-G interrompe una ricerca incrementale e ripristina  la
       riga  originale.   Quando  è  terminata  la ricerca, l'elemento della cronologia contenente la stringa di
       ricerca diventa la riga corrente.

       Per trovare altri elementi nell'elenco della cronologia, battere Control-S o Control-R secondo  il  caso.
       Viene  eseguita  così  una  ricerca all'indietro o in avanti nella cronologia del successivo elemento che
       corrisponde alla stringa di ricerca che è stata immessa.  Ogni altra sequenza di  tasti  associata  a  un
       comando  readline  pone  termine alla ricerca ed esegue il comando presente nella linea.  Per esempio, un
       newline provoca l'interruzione della ricerca e accetta la riga, eseguendo  così  il  comando  proveniente
       dall'elenco della cronologia.

       Readline  ricorda  l'ultima  stringa di ricerca incrementale.  Se due Control-R vengono battuti senza che
       siano intervenuti caratteri che definiscono una nuova stringa di ricerca, viene utilizzata la stringa  di
       ricerca memorizzata al momento.

       Le  ricerche  non  incrementali  leggono  l'intera  stringa  di  ricerca  prima di avviare la ricerca per
       individuare righe nella cronologia.  La stringa di ricerca può essere battuta dall'utente o essere  parte
       del contenuto della riga corrente.

   Nomi di comando readline
       La  seguente  è  una  lista  di  nomi  dei  comandi e delle sequenze di tasti predefiniti a cui essi sono
       collegati.  Nomi di comando senza una sequenza  di  tasti  collegata  a  essi  sono  scollegati  in  modo
       predefinito.   Nelle descrizioni seguenti, punto si riferisce alla posizione corrente del cursore e marca
       alla posizione del cursore salvata col comando set-mark.  Il testo fra il punto e  la  marca  è  indicato
       come regione.

   Comandi di movimento
       beginning-of-line (C-a)
              Si sposta all'inizio della riga corrente.
       end-of-line (C-e)
              Si sposta alla fine della riga.
       forward-char (C-f)
              Si sposta avanti di un carattere.
       backward-char (C-b)
              Si sposta indietro di un carattere.
       forward-word (M-f)
              Si  sposta in avanti fino alla fine della parola successiva.  Le parole sono composte di caratteri
              alfanumerici (lettere e cifre).
       backward-word (M-b)
              Si sposta indietro all'inizio della parola corrente o precedente.   Le  parole  sono  composte  di
              caratteri alfanumerici (lettere e cifre).
       shell-forward-word
              Si  sposta  in  avanti  fino  alla  fine  della  parola  successiva.  Le parole sono delimitate da
              metacaratteri di shell non quotati.
       shell-backward-word
              Si sposta indietro all'inizio della parola corrente o precedente.  Le parole  sono  delimitate  da
              metacaratteri di shell non quotati.
       clear-screen (C-l)
              Pulisce  lo  schermo lasciando la riga corrente in cima allo schermo.  Con un argomento, rinfresca
              la riga corrente senza ripulire lo schermo.
       redraw-current-line
              Rinfresca la riga corrente.

   Comandi per manipolare la cronologia
       accept-line (Newline, Return)
              Accetta la riga senza curarsi di dove sia il cursore.  Se questa riga non è vuota, è aggiunta alla
              lista della cronologia in accordo con lo stato della variabile HISTCONTROL.  Se la riga è una riga
              di cronologia modificata, allora ripristina la riga di cronologia al suo stato originale.
       previous-history (C-p)
              Prende il precedente comando dalla lista della cronologia, spostandosi indietro nella lista.
       next-history (C-n)
              Prende il successivo comando dalla lista della cronologia, spostandosi avanti nella lista.
       beginning-of-history (M-<)
              Si sposta alla prima riga nella cronologia.
       end-of-history (M->)
              Si sposta alla fine della cronologia dell'input, cioè, alla riga che si sta inserendo.
       reverse-search-history (C-r)
              Cerca all'indietro partendo dalla riga corrente spostandosi in `su' attraverso la cronologia  come
              necessario.  Questa è una ricerca incrementale.
       forward-search-history (C-s)
              Cerca  in avanti partendo dalla riga corrente e spostandosi in `giù' attraverso la cronologia come
              necessario.  Questa è una ricerca incrementale.
       non-incremental-reverse-search-history (M-p)
              Cerca all'indietro attraverso la cronologia, partendo dalla riga  corrente,  una  stringa  fornita
              dall'utente, usando una ricerca non incrementale.
       non-incremental-forward-search-history (M-n)
              Cerca  in  avanti attraverso la cronologia una stringa fornita dall'utente, usando una ricerca non
              incrementale.
       history-search-forward
              Cerca in avanti attraverso la cronologia una stringa di caratteri tra l'inizio della riga corrente
              e il punto del cursore.  Questa è una ricerca non incrementale.
       history-search-backward
              Cerca  all'indietro  attraverso  la  cronologia  una  stringa di caratteri tra l'inizio della riga
              corrente e il punto del cursore.  Questa è una ricerca non incrementale.
       yank-nth-arg (M-C-y)
              Inserisce il primo argomento del comando precedente (generalmente la  seconda  parola  sulla  riga
              precedente)  alla  posizione  del  cursore.   Con  un  argomento n, inserisce la n-sima parola del
              comando precedente (le parole nel comando precedente iniziano con  la  parola  0).   Un  argomento
              negativo  inserisce la n-sima parola dalla fine del comando precedente.  Una volta che l'argomento
              n è calcolato, l'argomento è estratto  come  se  l'espansione  della  cronologia  "!n"  sia  stata
              specificata.
       yank-last-arg (M-., M-_)
              Inserisce  l'ultimo  argomento  del  comando  precedente (l'ultima parola della precedente riga di
              cronologia).  Con un argomento numerico, si  comporta  esattamente  come  yank-nth-arg.   Chiamate
              consecutive  a  yank-last-arg  percorrono  l'elenco  della cronologia all'indietro, inserendo ogni
              volta l'ultima parola (o la parola specificata dall'argomento della prima chiamata) di ogni  riga.
              Qualsiasi  argomento  numerico  fornito  a  queste  chiamate  successive determina la direzione di
              scorrimento  nella  cronologia.   Un  argomento  negativo  commuta  la  direzione  di  scorrimento
              (all'indietro  o  in  avanti).  I servizi dell'espansione della cronologia sono usati per estrarre
              l'ultimo argomento, come se fosse stata specificata l'espansione della cronologia "!$".
       shell-expand-line (M-C-e)
              Espande la riga nello stesso modo in cui lo fa la shell.  Questo espande gli alias e la cronologia
              così  come  tutte  le  parole della shell.  Si veda ESPANSIONE DELLA CRONOLOGIA più avanti per una
              descrizione dell'espansione della cronologia.
       history-expand-line (M-^)
              Effettua l'espansione della cronologia sulla riga corrente.  Si veda ESPANSIONE  DELLA  CRONOLOGIA
              più avanti per una descrizione dell'espansione della cronologia.
       magic-space
              Effettua  l'espansione  della  cronologia  sulla  riga  corrente  e inserisce uno spazio.  Si veda
              ESPANSIONE DELLA CRONOLOGIA più avanti per una descrizione dell'espansione della cronologia.
       alias-expand-line
              Effettua l'espansione degli alias sulla riga corrente.  Si veda ALIAS sopra  per  una  descrizione
              dell'espansione degli alias.
       history-and-alias-expand-line
              Espande la cronologia e gli alias sulla riga corrente.
       insert-last-argument (M-., M-_)
              Un sinonimo di yank-last-arg.
       operate-and-get-next (C-o)
              Accetta  la  riga  corrente per l'esecuzione e prende dalla cronologia la riga successiva a quella
              corrente, per la modifica.  Qualsiasi argomento viene ignorato.
       edit-and-execute-command (C-xC-e)
              Invoca un editor sulla riga di comando corrente ed esegue il  risultato  come  comandi  di  shell.
              Bash tenta di invocare $VISUAL, $EDITOR e emacs come editor, in quest'ordine.

   Comandi per cambiare il testo
       delete-char (C-d)
              Cancella  il carattere nel punto del cursore.  Se il punto è all'inizio della riga, non vi è alcun
              carattere nella riga, e l'ultimo carattere  battuto  non  era   associato  a  delete-char,  allora
              ritorna EOF.
       backward-delete-char (Rubout)
              Cancella  il  carattere  dopo  il  cursore.   Quando  è dato un argomento numerico, salva il testo
              cancellato sul kill-ring.
       forward-backward-delete-char
              Cancella il carattere sotto il cursore, a meno che il cursore non sia alla fine  della  riga,  nel
              qual caso il carattere dietro al cursore viene cancellato.
       quoted-insert (C-q, C-v)
              Aggiunge  il  successivo  carattere  battuto  sulla  riga in modo letterale.  Questo è il modo per
              inserire caratteri come C-q, per esempio.
       tab-insert (C-v TAB)
              Inserisce un carattere tab.
       self-insert (a, b, A, 1, !, ...)
              Inserisce il carattere battuto.
       transpose-chars (C-t)
              Trascina il carattere prima del punto  del  cursore  in  avanti  sopra  il  carattere  nel  punto,
              spostando  anche il punto in avanti.  Se il punto è alla fine della riga, traspone i due caratteri
              prima del punto.  Argomenti negativi non hanno effetto.
       transpose-words (M-t)
              Trascina la parola prima del punto del cursore dopo la parola oltre il punto, spostando inoltre il
              punto  sopra  quella  parola.   Se  il punto è alla fine della riga, allora traspone le ultime due
              parole sulla riga.
       upcase-word (M-u)
              Rende maiuscola la parola corrente (o seguente).  Con un argomento negativo,  opera  sulla  parola
              precedente, ma non sposta il punto del cursore.
       downcase-word (M-l)
              Rende  minuscola  la  parola corrente (o seguente).  Con un argomento negativo, opera sulla parola
              precedente, ma non sposta il punto del cursore.
       capitalize-word (M-c)
              Rende maiuscola la prima lettera della parola corrente (o seguente).  Con un  argomento  negativo,
              opera sulla parola precedente, ma non sposta il punto del cursore.
       overwrite-mode
              Alterna  fra  modalità  inserimento  e  modalità  di  sovrascrittura.   Con  un argomento numerico
              esplicito positivo passa alla modalità sovrascrittura.  Con un argomento  numerico  esplicito  non
              positivo  passa  alla  modalità  inserimento.   Questo comando riguarda solo la modalità emacs; la
              modalità vi sovrascrive in modo diverso.  Ogni chiamata a readline()  viene  avviata  in  modalità
              inserimento.   In  modalità  sovrascrittura  i  caratteri associati a self-insert sostituiscono il
              testo nel punto del cursore piuttosto che sospingere il testo verso destra.  I caratteri associati
              a  backward-delete-char sostituiscono il carattere prima del punto con uno spazio.  Questo comando
              è non associato in modo predefinito.

   Eliminazione e recupero
       kill-line (C-k)
              Elimina il testo dal punto del cursore fino alla fine della riga.
       backward-kill-line (C-x C-Rubout)
              Elimina all'indietro fino all'inizio della riga.
       unix-line-discard (C-u)
              Elimina all'indietro dal punto del cursore fino all'inizio della riga.  Il testo eliminato   viene
              salvato nel kill-ring
       kill-whole-line
              Elimina tutti i caratteri sulla riga corrente, non importa dove sia il punto del cursore.
       kill-word (M-d)
              Elimina  dal  punto  del  cursore fino alla fine della parola corrente o, se tra parole, fino alla
              fine della successiva parola.  I delimitatori di parola sono gli stessi usati da forward-word.
       backward-kill-word (M-Rubout)
              Elimina la parola dietro il punto del cursore.  I delimitatori di parole sono gli stessi usati  da
              forward-word.
       shell-kill-word (M-d)
              Elimina  dal  punto  del  cursore fino alla fine della parola corrente o, se tra parole, fino alla
              fine  della  parola  successiva.   I  delimitatori  di   parola   sono   gli   stessi   usati   da
              shell-forward-word.
       shell-backward-kill-word (M-Rubout)
              Elimina  la parola dietro il punto del cursore.  I delimitatori di parola sono gli stessi usati da
              shell-backward-word.
       unix-word-rubout (C-w)
              Elimina la parola dietro il punto del cursore, usando  gli  spazi  bianchi  come  delimitatori  di
              parola.  Il testo eliminato è salvato nel kill-ring.
       unix-filename-rubout
              Elimina  la  parola prima del punto del cursore, usando uno spazio bianco e il carattere barra [/]
              come delimitatori di parola.  Il testo eliminato è salvato nel kill-ring.
       delete-horizontal-space
              Cancella tutti gli spazi e i tab attorno al punto del cursore.
       kill-region
              Elimina il testo nella regione corrente.
       copy-region-as-kill
              Copia il testo nella regione sul kill buffer.
       copy-backward-word
              Copia la parola prima del punto del cursore sul kill buffer.  I delimitatori di  parola  sono  gli
              stessi di backward-word.
       copy-forward-word
              Copia  la  parola  dopo  il  punto del cursore sul kill buffer.  I delimitatori di parola sono gli
              stessi di forward-word.
       yank (C-y)
              Copia il contenuto in cima al kill-ring e lo pone nel buffer nel punto del cursore.
       yank-pop (M-y)
              Ruota il kill-ring, e copia la nuova cima.  Funziona solo dopo yank o yank-pop.

   Argomenti numerici
       digit-argument (M-0, M-1, ..., M--)
              Aggiunge questa cifra all'argomento che sta già accumulando, o inizia  un  nuovo  argomento.   M--
              avvia un argomento negativo.
       universal-argument
              Questo  è un altro modo per specificare un argomento.  Se il comando è seguito da una o più cifre,
              opzionalmente con un segno meno iniziale, queste cifre definiscono l'argomento.  Se il  comando  è
              seguito  da  cifre, eseguendo universal-argument di nuovo termina l'argomento numerico, ma a parte
              questo viene ignorato.  Come caso speciale, se questo  comando  è  seguito  immediatamente  da  un
              carattere  che  non  è  né una cifra né un segno meno, il contatore degli argomenti per il comando
              successivo è moltiplicato per quattro.  Il contatore è inizialmente  uno,  così  eseguendo  questa
              funzione  la  prima  volta  il  contatore  diventa  quattro, la seconda volta il contatore diventa
              sedici, e così via.

   Completamento
       complete (TAB)
              Tenta di effettuare il completamento del testo che precede il punto del cursore.   Bash  tenta  il
              completamento  trattando il testo, rispettivamente, come una variabile (se il testo inizia con $),
              nome di utente (se il testo comincia con ~), nome di host (se il testo comincia con @)  o  comando
              (inclusi  alias  e  funzioni).   Se  nessuno  di  questi  produce  un  risultato, viene tentato il
              completamento del nome di file.
       possible-completions (M-?)
              Elenca i possibili completamenti del testo che precede il punto del cursore.
       insert-completions (M-*)
              Inserisce tutti i completamenti del testo che precede il punto del  cursore  che  sarebbero  stati
              generati da possible-completions.
       menu-complete
              Simile  a  complete,  ma  sostituisce la parola da completare con una corrispondenza singola dalla
              lista dei possibili completamenti.  Un'esecuzione ripetuta di menu-complete scorre  la  lista  dei
              possibili  completamenti,  inserendo  una  corrispondenza  alla  volta.  Alla fine della lista dei
              completamenti viene emesso un segnale acustico (dipendente dall'impostazione di bell-style)  e  il
              testo originale è ripristinato.  Con un argomento n si sposta di n posizioni in avanti nella lista
              dei completamenti individuati; può essere usato un argomento negativo per  spostarsi  all'indietro
              nella lista.  Questo comando è da associare normalmente al tasto TAB, però non è associato in modo
              predefinito.
       menu-complete-backward
              Identico a menu-complete, ma si muove in senso inverso nella lista  dei  possibili  completamenti,
              come  se  menu-complete  avesse  ricevuto  un argomento negativo.  Come comportamento predefinito,
              questo comando non ha restrizioni.
       delete-char-or-list
              Cancella il carattere sotto il cursore se non si trova all'inizio o alla fine della riga (simile a
              delete-char).   Se  è  alla  fine della riga, si comporta in modo identico a possible-completions.
              Come comportamento predefinito, questo comando non è associato.
       complete-filename (M-/)
              Tenta il completamento del nome del file sul testo che precede il punto del cursore.
       possible-filename-completions (C-x /)
              Elenca i possibili completamenti del testo che precede il punto del cursore, trattandolo  come  un
              nome di file.
       complete-username (M-~)
              Tenta  il  completamento  del  testo che precede il punto del cursore, trattandolo come un nome di
              utente.
       possible-username-completions (C-x ~)
              Elenca i possibili completamenti del testo che precede il punto del cursore, trattandolo  come  un
              nome di utente.
       complete-variable (M-$)
              Tenta  il completamento del testo che precede il punto del cursore, trattandolo come una variabile
              di shell.
       possible-variable-completions (C-x $)
              Elenca i possibili completamenti del testo che precede il punto del cursore, trattandolo come  una
              variabile di shell.
       complete-hostname (M-@)
              Tenta  il  completamento  del  testo che precede il punto del cursore, trattandolo come un nome di
              host.
       possible-hostname-completions (C-x @)
              Elenca i possibili completamenti del testo che precede il punto del cursore, trattandolo  come  un
              nome di host.
       complete-command (M-!)
              Tenta  il completamento del testo che precede punto del cursore, trattandolo come nome di comando.
              Il completamento di comando tenta di far combaciare il  testo  confrontandolo  con  alias,  parole
              riservate,  funzioni di shell, comandi incorporati di shell e, da ultimo, nomi di file eseguibili,
              in quest'ordine.
       possible-command-completions (C-x !)
              Elenca i possibili completamenti del testo che precede il punto del cursore, trattandolo  come  un
              nome di comando.
       dynamic-complete-history (M-TAB)
              Tenta  il completamento del testo che precede il cursore, confrontando il testo con le righe della
              cronologia cercando le possibili corrispondenze di completamento.
       dabbrev-expand
              Tenta il completamento del menù sul testo che precede il punto del cursore, confrontando il  testo
              con le righe della lista della cronologia cercando le possibili corrispondenze di completamento.
       complete-into-braces (M-{)
              Effettua  il  completamento  del  nome  di  file  e insericse la lista dei possibili completamenti
              racchiusi tra parentesi graffe, rendendo la lista disponibile per la  shell  (si  veda  Espansione
              delle parentesi graffe sopra).

   Macro di tastiera
       start-kbd-macro (C-x ()
              Inizia a salvare i caratteri battuti nella corrente macro di tastiera.
       end-kbd-macro (C-x ))
              Smette di salvare i caratteri battuti nella corrente macro di tastiera e memorizza la definizione.
       call-last-kbd-macro (C-x e)
              Riesegue l'ultima macro di tastiera definita, facendo sì che i caratteri nella macro appaiano come
              se fossero stati battuti sulla tastiera.

   Varie
       re-read-init-file (C-x C-r)
              Legge il contenuto del file inputrc, e incorpora ogni associazione o assegnamento di variabile che
              trova.
       abort (C-g)
              Annulla  il  corrente comando di mmodifica ed emette il segnale acustico del terminale (dipendente
              dall'impostazione di bell-style).
       do-uppercase-version (M-a, M-b, M-x, ...)
              Se il carattere x battuto assieme al tasto Meta  è  minuscolo,  esegue  il  comando  collegato  al
              corrispondente carattere maiuscolo.
       prefix-meta (ESC)
              Definisce come tasto Meta il successivo carattere battuto.  ESC f è equivalente a Meta-f.
       undo (C-_, C-x C-u)
              Undo incrementale, memorizzato separatamente per ogni riga.
       revert-line (M-r)
              Annulla  tutti  i  cambiamenti  fatti  su  questa riga.  Questo è come eseguire il comando undo un
              numero di volte sufficiente a riportare la riga al suo stato iniziale.
       tilde-expand (M-&)
              Effettua l'espansione della tilde sulla parola corrente.
       set-mark (C-@, M-<space>)
              Imposta la marca in corrispondenza del punto del cursore.  Se viene fornito un argomento  numerico
              la marca viene impostato a quella posizione.
       exchange-point-and-mark (C-x C-x)
              Scambia  il  punto  del  cursore con la marca.  La posizione corrente del cursore è impostata alla
              posizione salvata, e la vecchia posizione del cursore è salvata come marca.
       character-search (C-])
              Viene letto un carattere e il punto del cursore  è  spostato  all'occorrenza  successiva  di  quel
              carattere.  Un contatore negativo cerca occorrenze precedenti.
       character-search-backward (M-C-])
              Viene  letto  un  carattere  e  il  punto del cursore è spostato all'occorrenza precedente di quel
              carattere.  Un contatore negativo cerca occorrenze successive.
       skip-csi-sequence
              Legge abbastanza caratteri da esaurire una sequenza di combinazione di tasti come quelle  definite
              per  tasti  quali  Home  e End.  Queste sequenze iniziano con un Control Sequence Indicator (CSI),
              generalmente ESC-[.  Se questa sequenza è collegata a "\[", i tasti che  producono  tali  sequenze
              non  hanno  alcun  effetto,  a  meno che non siano collegati esplicitamente a un comando readline,
              invece di inserire caratteri sparsi nel buffer di modifica.  Come impostazione predefinita, questo
              comando non ha restrizioni, ma in genere è collegato a ESC-[.
       insert-comment (M-#) Senza un argomento numerico il valore della variabile
              readline  comment-begin  è  inserito  all'inizio  della  riga corrente.  Se è fornito un argomento
              numerico questo comando agisce come un interruttore: se i  caratteri  all'inizio  della  riga  non
              corrispondono  al  valore  di  comment-begin,  il valore viene inserito, altrimenti i caratteri in
              comment-begin vengono cancellati dall'inizio della  riga.   In  entrambi  i  casi  la  riga  viene
              accettata  come se fosse stato battuto un codice di fine riga (newline).  Il valore predefinito di
              comment-begin fa sì che questo comando trasformi la riga corrente in un commento di shell.  Se  un
              argomento  numerico  provoca  la rimozione del carattere di commento, la riga verrà eseguita dalla
              shell.
       glob-complete-word (M-g)
              La parola prima del punto del cursore è trattata come un modello per  l'espansione  del  percorso,
              con  un  asterisco aggiunto alla fine implicitamente.  Questo modello viene usato per generare una
              lista di nomi di file corrispondenti a possibili completamenti.
       glob-expand-word (C-x *)
              La parola prima del punto del cursore è trattata come un modello per l'espansione del percorso,  e
              la  lista dei nomi di file individuati viene inserita, sostituendo la parola.  Se viene fornito un
              argomento numerico viene aggiunto alla fine un asterisco prima dell'espansione del percorso.
       glob-list-expansions (C-x g)
              Viene mostrata la lista delle espansioni che sarebbero state generate  da  glob-expand-word  e  la
              riga  è  ridisegnata.   Se  viene  fornito  un  argomento  numerico, un asterisco è aggiunto prima
              dell'espansione del percorso.
       dump-functions
              Stampa tutte le funzioni e le loro associazioni di tasti sul file di output  di  readline.   Se  è
              fornito  un  argomento numerico, l'output è formattato in modo tale da poter essere inserito in un
              file inputrc.
       dump-variables
              Stampa tutte le variabili readline impostabili e i loro valori sul file di output di readline.  Se
              viene fornito un argomento numerico l'output è formattato in modo tale da poter essere inserito in
              un file inputrc.
       dump-macros
              Stampa tutte le sequenze di tasti readline associate a macro e le stringhe da loro  prodotte.   Se
              viene fornito un argomento numerico l'uscita è formattata in modo tale da poter essere inserito in
              un file inputrc.
       display-shell-version (C-x C-v)
              Mostra l'informazione sulla versione della corrente istanza di bash.

   Completamento programmabile
       Quando viene tentato il completamento della parola per un argomento  di  un  comando  per  il  quale  una
       specifica  di  completamento   (una  compspec) è stata definita col comando incorporato complete (si veda
       COMANDI INCORPORATI DELLA SHELL più avanti), vengono invocati i servizi di completamento programmabile.

       Per prima cosa viene identificato il nome del comando.  Se la parola  del  comando  è  la  stringa  vuota
       (completamento tentato all'inizio di una riga vuota), viene usato ogni compspec definito con l'opzione -E
       di complete.  Se un comspec è stato definito per quel comando, il comspec è usato per generare  la  lista
       dei  possibili completamenti per la parola.  Se il nome del comando è un percorso completo di file, viene
       ricercato per primo un comspec per il percorso completo.  Se non viene  trovato  nessun  comspec  per  il
       percorso  completo viene fatto un tentativo per trovare un comspec per la porzione che segue la barra [/]
       finale.  Se queste ricerche non risultano in un compspec, viene  usato  come  predefinito  ogni  compspec
       definito con l'opzione -D di complete.

       Un  volta  trovato  un comspec, questo è usato per generare la lista delle parole corrispondenti.  Se non
       viene trovato un comspec, viene effettuato  il  completamento  di  bash  predefinito  come  descritto  in
       precedenza, sotto Completamento.

       Per prima cosa, sono usate le azioni specificate dal comspec.  Sono restituite solo le corrispondenze che
       iniziano con la parola che  dev'essere  completata.   Quando  viene  usata  l'opzione  -f  o  -d  per  il
       completamento  del  nome di file o della directory, la variabile di shell FIGNORE è usata per filtrare le
       corrispondenze.

       In seguito, viene generato qualsiasi completamento specificato da un modello di espansione  del  nome  di
       percorso  all'opzione  -G.   Le parole generate dal modello non devono necessariamente corrispondere alla
       parola che dev'essere completata.  La  variabile  di  shell  GLOBIGNORE  non  è  usata  per  filtrare  le
       corrispondenze, ma viene usata la variabile FIGNORE.

       In  seguito,  viene considerata la stringa specificata come argomento all'opzione -W.  La stringa è prima
       suddivisa usando i caratteri nella variabile speciale IFS come delimitatori.  È rispettata  la  quotatura
       della  shell.   Ogni  parola viene poi espansa usando espansione delle parentesi graffe, espansione della
       tilde, espansione di parametro e di variabile, sostituzione di comando  ed  espansione  aritmetica,  come
       descritto  in  precedenza, sotto ESPANSIONE.  I risultati sono suddivisi usando le regole sopra descritte
       sotto Suddivisione in parole.  I risultati dell'espansione sono confrontati con la parte  iniziale  della
       parola che dev'essere completata, e quelli che corrispondono diventano i possibili completamenti.

       Dopo  che queste corrispondenze sono state generate, viene invocata qualsiasi funzione di shell o comando
       specificato con le opzioni -F e -C.   Quando  il  comando  o  funzione  viene  invocata,  alle  variabili
       COMP_LINE,  COMP_POINT,  COMP_KEY,  e COMP_TYPE sono assegnati valori come descritto in precedenza, sotto
       Variabili di shell.  Quando una funzione di shell sta per essere  invocata,  le  variabili  COMP_WORDS  e
       COMP_CWORD  sono  pure  impostate.  Quando viene invocata una funzione o comando, il primo argomento è il
       nome del comando i cui argomenti sono stati completati, il secondo argomento è la parola da completare  e
       il  terzo argomento è la parola che precede  la parola da completare sulla riga di comando corrente.  Non
       viene eseguita nessuna azione di filtro sui  completamenti  generati  confrontandoli  con  la  parola  da
       completare; la funzione o comando ha libertà completa nel generare le corrispondenze.

       Qualsiasi  funzione specificata con -F viene invocata per prima.  La funzione può usare uno qualsiasi dei
       servizi di shell,  incluso  il  comando  incorporato  compgen  descritto  più  avanti,  per  generare  le
       corrispondenze.  la funzione deve mettere i possibili completamenti della variabile array COMPREPLY.

       In seguito, qualsiasi comando specificato con l'opzione -C viene invocato in un ambiente equivalente alla
       sostituzione di comando.  Questo dovrebbe stampare una  lista  di  completamenti,  uno  per  riga,  sullo
       standard output.  Una barra inversa può essere usata per proteggere un newline, se necessario.

       Una  volta  generati  tutti  i  possibili  completamenti,  ogni filtro specificato con l'opzione -X viene
       applicato alla lista.  Il filtro è un modello come quello usato per l'espansione di percorso; una  &  nel
       modello è sostituita col testo della parola da completare.  Una & letterale si può indicare con una barra
       inversa di protezione; la barra inversa viene rimossa prima della ricerca di  una  corrispondenza.   Ogni
       completamento  che  corrisponde  al modello viene rimosso dalla lista.  Un ! iniziale nega il modello; in
       questo caso ogni completamento non corrispondente al modello viene rimosso.

       Infine, qualsiasi prefisso e suffisso specificato dalle opzioni -P e -S è aggiunto a  ogni  membro  della
       lista  di  completamento  e  il  risultato è restituito al codice di completamento readline come lista di
       completamenti possibili.

       Se le azioni precedentemente applicate non generano  corrispondenze,  e  a  complete  era  stata  fornita
       l'opzione  -o  dirnames  quando  era  stato definito comspec, viene tentato il completamento come nome di
       directory.

       Se a complete era stata fornita l'opzione -o plusdirs quando era stato definito comspec, viene tentato il
       completamento  come  nomi  di  directory  e  qualunque corrispondenza è aggiunta ai risultati delle altre
       azioni.

       Come comportamento predefinito, se viene trovato un comspec, qualsiasi cosa generi  viene  restituito  al
       codice  di  completamento  come  insieme  completo  di  completamenti possibili.  I completamenti di bash
       predefiniti non vengono tentati, e  la  readline  predefinita  del  completamento  del  nome  di  file  è
       disabilitata.   Se  l'opzione -o bashdefault era stata fornita a complete al momento della definizione di
       comspec, i completamenti predefiniti di bash vengono tentati se il comspec non genera corrispondenze.  Se
       l'opzione  -o  default  era  stata  fornita  a  complete  al  momento  della  definizione  di  comspec, i
       completamenti predefiniti di readline vengono effettuati se il comspec (e, se tentato,  il  completamento
       predefinito di bash) non genera corrispondenze.

       Quando  un  comspec  indica  che  è  desiderato  il  completamento come nome di directory, le funzioni di
       completamento programmabile forzano readline ad aggiungere una barra [/]  ai  nomi  completati  che  sono
       collegamenti  simbolici  a directory, dipendente dal valore della variabile di readline mark-directories,
       indipendentemente dall'impostazione della variabile di readline mark-symlinked-directories.

       Ci sono alcuni metodi per modificare dinamicamente i completamenti.  Ciò è molto utile  quando  usato  in
       combinazione  con  un  completamento  predefinito  specificato con complete -D.  Per le funzioni di shell
       eseguite come manipolatori  di  completamento  è  possibile  richiedere  di  ritentare  il  completamento
       indicando  il  ritorno  di  uno stato d'uscita di 124.  Se una funzione di shell ritorna 124, e cambia il
       compspec associato al comando sul quale si sta tentando il completamento (fornito  come  primo  argomento
       quando  viene eseguita la funzione), il completamento programmabile riparte dall'inizio, col tentativo di
       trovare un nuovo compspec per quel comando.  Questo permette  a  una  serie  di  completamenti  di  venir
       costruiti dinamicamente al tentativo di completamento, piuttosto che essere caricati tutti in una volta.

       Per esempio, ponendo che ci sia una libreria di compspec, ognuno tenuto in un file corrispondente al nome
       del  comando,  la  seguente  funzione  di  completamento   predefinita   caricherebbe   i   completamenti
       dinamicamente:

       _completion_loader()
       {
            . "/etc/bash_completion.d/$1.sh" >/dev/null 2>&1 && return 124
       }
       complete -D -F _completion_loader

CRONOLOGIA

       Quando  l'opzione  -o  history  del comando incorporato set è abilitata, la shell fornisce l'accesso alla
       cronologia dei comandi, la lista dei comandi precedentemente battuti.  Il valore della variabile HISTSIZE
       è  usata  come numero di comandi da salvare nell'elenco della cronologia.  Il testo degli ultimi HISTSIZE
       comandi (predefinito 500) viene salvato.  La shell immagazzina ogni comando nella lista della  cronologia
       prima  dell'espansione  di  parametro  e  di  variabile  (si  veda  ESPANSIONE sopra) ma dopo che è stata
       effettuata l'espansione della cronologia, dipendente dai valori delle variabili  di  shell  HISTIGNORE  e
       HISTCONTROL.

       All'avvio,  la  cronologia  è  inizializzata  dal  file  indicato  dalla  variabile HISTFILE (predefinita
       ~/.bash_history).  Il file indicato dal valore di HISTFILE viene troncato, se necessario,  per  contenere
       non  più  del  numero  di righe specificate dal valore di HISTFILESIZE.  Quando viene letto il file della
       cronologia, le righe che iniziano con un carattere di commento, seguito immediatamente da una cifra, sono
       interpretate  come  marcatura  oraria  per  la  riga precedente Queste informazioni di data e ora vengono
       visualizzate opzionalmente a seconda  del  valore  della  variabile  HISTTIMEFORMAT.   Quando  una  shell
       interattiva  esce,  le  ultime $HISTSIZE righe vengono copiate dalla lista della cronologia su $HISTFILE.
       Se l'opzione di shell histappend è abilitata (si veda la descrizione di shopt sotto  COMANDI  INCORPORATI
       DELLA  SHELL  più  avanti), le righe vengono accodate al file della cronologia, in caso contrario il file
       della cronologia viene sovrascritto.  Se HISTFILE non è impostato  o  il  file  della  cronologia  è  non
       scrivibile, la cronologia non viene salvata.  Se la variabile HISTTIMEFORMAT è impostata, le informazioni
       di data e ora vengono scritte nel file della cronologia, contrassegnate col carattere di  commento  della
       cronologia,  in  modo  da  venir preservate durante le sessioni di shell.  Il carattere di commento viene
       usato per distinguere le informazioni di data e  ora  dalle  altre  righe.   Dopo  il  salvataggio  della
       cronologia  il  file  della  cronologia  è  troncato  per  contenere  non  più di HISTFILESIZE righe.  Se
       HISTFILESIZE non è impostato, nessun troncamento viene effettuato.

       Il comando incorporato fc (si veda COMANDI INCORPORATI DELLA SHELL  più  avanti)  può  essere  usato  per
       elencare  o  editare e rieseguire una parte della lista della cronologia.  Il comando incorporato history
       può essere usato per mostrare o modificare la lista della cronologia e manipolare il file di  cronologia.
       Quando si usa la modifica della riga di comando, sono disponibili comandi di ricerca in ciascuna modalità
       di modifica che fornisce accesso alla lista della cronologia.

       La shell permette il controllo su quali comandi salvare  nella  lista  della  cronologia.   Le  variabili
       HISTCONTROL e HISTIGNORE possono essere definite in modo tale che la shell salvi solo un sottoinsieme dei
       comandi immessi.  L'opzione di shell cmdhist, se abilitata, fa sì che la shell tenti di salvare ogni riga
       di  un  comando  multiriga  nello  stesso elemento della cronologia, aggiungendo dei punti e virgola dove
       necessario per preservare le correttezza sintattica.  L'opzione di shell lithist  chiede  alla  shell  di
       salvare i comandi con i codici di fine riga (newline) inclusi invece che separare i comandi con dei punti
       e virgola.  Si veda la descrizione del comando incorporato shopt più avanti,  sotto  COMANDI  INCORPORATI
       DELLA SHELL per informazioni su come definire e annullare le opzioni di shell.

ESPANSIONE DELLA CRONOLOGIA

       La  shell  ha la capacità di espandere la cronologia in maniera simile all'espansione della cronologia in
       csh.  Questa sezione descrive le possibilità di sintassi disponibili.  Questa possibilità è abilitata  in
       modo  predefinito  per  le  shell  interattive, e può essere disabilitata usando l'opzione +H del comando
       incorporato set (si veda COMANDI INCORPORATI DELLA SHELL più  avanti).   Le  shell  non  interattive  non
       effettuano l'espansione della cronologia come comportamento predefinito.

       Le  espansioni  della  cronologia  inseriscono  parole  dall'elenco della cronologia nel flusso di input,
       agevolando la ripetizione di comandi, l'inserimento di argomenti di  comandi  precedenti  nella  riga  di
       input corrente, o la correzione rapida di errori in comandi già immessi.

       L'espansione della cronologia è effettuata immediatamente dopo che una riga completa è stata letta, prima
       che la shell la divida in parole.  Essa ha luogo in due parti.  La prima è  per  determinare  quale  riga
       dall'elenco della cronologia usare durante la sostituzione.  La seconda è per selezionare parti di quella
       riga da includere nella riga corrente.  La riga selezionata dalla cronologia è l'evento, e  la  parte  di
       quella  riga  su  cui  si agisce sono le parole.  Diversi modificatori sono disponibili per manipolare le
       parole selezionate.  La riga è spezzata in parole allo stesso modo di quando è letta in input,  così  che
       più parole separate da metacaratteri  circondate da caratteri di quotatura sono considerate come una sola
       parola.  Le espansioni della cronologia iniziano con la comparsa di  un  carattere  di  espansione  della
       cronologia,  che  è  !  in modo predefnito.  Solo la barra inversa (\) e gli apostrofi possono quotare il
       carattere di espansione della cronologia.

       Diversi caratteri  inibiscono  l'espansione  della  cronologia  quando  trovati  immediatamente  dopo  il
       carattere  di  espansione  della  cronologia,  anche  se  non  quotato: spazio, carattere di tabulazione,
       newline, carriage return e =.  Se l'opzione di shell estglob è abilitata, anche ( inibisce l'espansione.

       Diverse opzioni di shell impostabili col comando incorporato shopt possono essere usate  per  influenzare
       il comportamento dell'espansione della cronologia.  Se l'opzione di shell histverify è abilitata (si veda
       la descrizione del comando incorporato shopt più avanti), e si sta usando readline, le sostituzioni della
       cronologia  non  vengono  passate immediatamente all'analizzatore della shell.  Invece, la riga espansa è
       ricaricata nel buffer di modifica di readline per ulteriori modifiche.  Se si sta usando  readline  ed  è
       abilitata l'opzione di shell histreedit, una sostituzione di cronologia non completata con successo viene
       ricaricata nel buffer di modifica di readline per essere corretta.  L'opzione -p al  comando  incorporato
       history  può essere usata per vedere cosa farebbe un'espansione della cronologia prima di usarla davvero.
       L'opzione -s del comando incorporato history può essere usata per  aggiungere  comandi  alla  fine  della
       lista  della cronologia senza eseguirli veramente, in modo che siano disponibili per essere richiamati in
       un secondo tempo.

       La shell permette il controllo dei vari caratteri usati dal meccanismo di espansione della cronologia (si
       veda  la  precedente  descrizione  di  histchars sotto Variabili di shell).  La shell usa il carattere di
       commento per contrassegnare le informazioni di data e ora quando scrive il file della cronologia.

   Designatore di evento
       Un designatore di evento è un riferimento a un elemento di riga di comando nella lista della  cronologia.
       A  meno che il riferimento non sia assoluto, gli eventi sono relativi alla posizione corrente nell'elenco
       della cronologia.

       !      Inizia una sostituzione di cronologia, tranne  quando  seguita  da  un  blank,  newline,  carriage
              return, = o ( (quando l'opzione di shell extglob è abilitata usando il comando incorporato shopt).
       !n     Designa la riga di comando n.
       !-n    Designa il comando corrente meno n.
       !!     Designa il comando precedente.  Questo è un sinonimo per `!-1'.
       !stringa
              Designa  il comando più recente che precede la posizione corrente nell'elenco della cronologia che
              inizia con stringa.
       !?stringa[?]
              Designa il comando più recente che precede la posizione corrente nell'elenco della cronologia  che
              contiene  stringa.  Il ? finale può essere omesso se stringa è seguita immediatamente da un codice
              di fine riga (newline).
       ^stringa1^stringa2^
              Sostituzione  rapida.   Ripete  il  comando  precedente,  rimpiazzando  stringa1   con   stringa2.
              Equivalente a ``!!:s/stringa1/stringa2/'' (si veda Modificatori più avanti).
       !#     L'intera riga di comando battuta fino a questo punto.

   Designatori di parola
       I  designatori di parola sono usati per selezionare parole dall'evento.  Un : separa la specificazione di
       evento dal designatore di parola.  Esso può essere omesso se il designatore di parola inizia con un ^, $,
       *,  -  o  %.   Le  parole sono numerate dall'inizio della riga, la prima parola essendo denotata da uno 0
       (zero).  Le parole sono inserite nella riga corrente separate da spazi singoli.

       0 (zero)
              La parola numero zero.  Per la shell, questa è la parola che costituisce il nome del comando.
       n      La n-esima parola.
       ^      Il primo argomento.  Cioè, la parola 1.
       $      L'ultimo argomento.
       %      La parola che combacia con `?stringa?' nella più recente ricerca.
       x-y    Un intervallo di parole; `-y' abbrevia `0-y'.
       *      Tutte le parole tranne la numero zero.  Questo è un sinonimo per `1-$'.  Non è un errore  usare  *
              se vi è solo una parola nell'evento; in quel caso il risultato è una stringa vuota.
       x*     Abbrevia x-$.
       x-     Abbrevia x-$ come x*, ma omette l'ultima parola.

       Se  un  designatore  di  parola è fornito senza una specificazione di evento, il comando precedente viene
       usato come evento.

   Modificatori
       Dopo l'opzionale designatore di parola,  può  comparire  una  sequenza  di  uno  o  più  fra  i  seguenti
       modificatori, ognuno preceduto da un `:'.

       h      Rimuove un componente finale in un nome di file, lasciando solo la testa.
       t      Rimuove tutti i componenti iniziali in un nome di file, lasciando la coda.
       r      Rimuove un suffisso finale della forma .xxx, lasciando il nome base (basename).
       e      Rimuove tutto tranne il suffisso finale.
       p      Stampa il nuovo comando ma non lo esegue.
       q      Quota le parole sostituite, prevenendo ulteriori sostituzioni.
       x      Quota le parole sostituite, come con q, ma spezza in parole sui blank e newline.
       s/vecchio/nuovo/
              Sostituisce  nuovo  alla prima occorrenza di vecchio nella riga di evento.  Qualsiasi delimitatore
              può essere usato al posto di /.  Il delimitatore finale è opzionale se esso è  l'ultimo  carattere
              della riga di evento.  Il delimitatore può essere quotato in vecchio e nuovo con una singola barra
              inversa.  Se compare & in nuovo, esso è sostituito da vecchio.  Una barra inversa singola quota il
              carattere  &.   Se  vecchio  è  nullo, viene impostato all'ultimo vecchio sostituito o, se nessuna
              sostituzione di cronologia è avvenuta, l'ultima stringa in una ricerca di !?stringa[?]
       &      Ripete la precedente sostituzione.
       g      Fa sì che i cambiamenti siano applicati sull'intera riga di evento.  Questo si usa in congiunzione
              con  `:s'  (p.es.,  `:gs/vecchio/nuovo/')  o  `:&'.  Se usato con `:s', qualsiasi delimitatore può
              essere usato al posto di /, e il delimitatore finale è opzionale se  è  l'ultimo  carattere  della
              riga di evento.  Un a può essere usato come sinonimo di g.
       G      Applica il modificatore che segue `s' una volta a ogni parola nella riga di evento.

COMANDI INCORPORATI DELLA SHELL

       Se  non  diversamente  indicato, ogni comando incorporato documentato in questa sezione, il quale accetti
       opzioni precedute da - , accetta -- per indicare la fine delle opzioni.  i comandi incorporati  :,  true,
       false,  e  test  non  accettano  opzioni e non trattano -- in modo speciale.  I comandi incorporati exit,
       logout, break, continue, let e shift accettano ed elaborano argomenti che iniziano con - senza richiedere
       --.   Altri  comandi  incorporati  che  accettano  argomenti,  ma  per  i quali non viene specificato che
       accettano opzioni, interpretano gli argomenti che iniziano con - come opzioni non valide e richiedono  --
       per impedire questa interpretazione.
       : [argomenti]
              Nessun effetto; il comando non fa niente, tranne l'espansione degli argomenti e l'effettuazione di
              ogni ridirezione specificata.  È ritornato un codice di uscita zero.

        .  nomefile [argomenti]
       source nomefile [argomenti]
              Legge ed esegue comandi dal nomefile nell'ambiente di shell corrente e ritorna lo  stato  d'uscita
              dell'ultimo  comando  eseguito  contenuto  in nomefile.  Se nomefile non contiene una barra [/], i
              percorsi in PATH sono usati per trovare la directory contenente nomefile.  Il file cercato in PATH
              non  ha  bisogno  di  essere  marcato come eseguibile.  Quando bash non è in modalità posix, viene
              ricercata la directory corrente se nessun file viene trovato in PATH.  Se l'opzione sourcepath del
              comando  incorporato  shopt è disattivata, il PATH non viene usato per ricercare.  Se sono forniti
              degli argomenti, essi diventano i parametri posizionali quando nomefile è eseguito.  Altrimenti  i
              parametri  posizionali  sono  inalterati.   Lo  stato  di  ritorno  è lo stato dell'ultimo comando
              terminato dentro lo script (0 se nessun comando è eseguito), e falso se nomefile non viene trovato
              o non può essere letto.

       alias [-p] [nome[=valore] ...]
              Alias senza argomenti o con l'opzione -p stampa la lista degli alias nella forma alias nome=valore
              sullo standard output.  Quando sono forniti argomenti, viene definito un alias per ogni  nome  per
              cui è dato il valore.  Uno spazio finale a valore fa sì che la parola seguente sia controllata per
              la sostituzione di alias quando l'alias è espanso.  Per ogni nome nella lista di argomenti per cui
              nessun valore è fornito, è stampato il nome e il valore dell'alias.  Alias ritorna 0 (vero) a meno
              che non venga dato un nome per il quale nessun alias è stato definito.

       bg [jobspec ...]
              Riprende ogni job sospeso jobspec in background, come se fosse stato avviato con  &.   Se  jobspec
              non  è presente, è usato quello che la shell considera essere il job corrente.  bg jobspec ritorna
              0 tranne quando viene eseguito con il job-control disabilitato o, se eseguito con  il  job-control
              abilitato, se jobspec non è stato trovato o è stato avviato senza usare job-control.

       bind [-m keymap] [-lpsvPSV]
       bind [-m keymap] [-q funzione] [-u funzione] [-r keyseq]
       bind [-m keymap] -f nomefile
       bind [-m keymap] -x keyseq:comando di shell
       bind [-m keymap] keyseq:nome-funzione
       bind comando readline
              Mostra  le  correnti associazioni di tasti e funzioni di readline, associa una sequenza di tasti a
              una funzione o macro di readline o imposta una variabile readline.  Ogni  argomento  che  non  sia
              un'opzione è un comando come apparirebbe in .inputrc, ma ciascuna associazione deve essere passata
              come argomento separato; per esempio, '"\C-x\C-r": re-read-init-file´.  Le  opzioni,  se  fornite,
              hanno i seguenti significati:
              -m keymap
                     Usa  keymap  come  mappatura della tastiera da modificare nelle successive associazioni.  I
                     nomi accettabili  per  keymap  sono  emacs,  emacs-standard,  emacs-meta,  emacs-ctlx,  vi,
                     vi-move,  vi-command  e  vi-insert.   vi  è equivalente a vi-command; emacs è equivalente a
                     emacs-standard.
              -l     Elenca i nomi di tutte le funzioni di readline.
              -p     Mostra i nomi delle funzioni di readline e delle loro associazioni in modo tale che possano
                     essere riletti.
              -P     Elenca i nomi delle funzioni di readline correnti e le loro associazioni.
              -s     Mostra  sequenze  di  tasti  di readline associati a macro e le stringhe risultanti in modo
                     tale che possano essere rilette.
              -S     Mostra sequenze di tasti di readline associate a macro e le stringhe risultanti.
              -v     Mostra i nomi delle variabili di readline e i loro valori in modo tale che  possano  essere
                     riletti.
              -V     Elenca i nomi delle variabili di readline correnti e i loro valori.
              -f nomefile
                     Legge le associazioni dei tasti dal file nomefile.
              -q funzione
                     Chiede quali tasti invocano la funzione indicata.
              -u funzione
                     Dissocia tutti i tasti associati alla funzione indicata.
              -r keyseq
                     Rimuove qualsiasi associazione corrente per keyseq.
              -x keyseq:comando di shell
                     Provoca  l'esecuzione  di  comando  di  shell  ogni volta che viene immesso keyseq.  Quando
                     comando di shell viene eseguito, la shell imposta la variabile READLINE_LINE  al  contenuto
                     del buffer di riga readline e la variabile READLINE_POINT alla posizione corrente del punto
                     di inserzione.  Se il comando eseguito cambia il valore di READLINE_LINE o  READLINE_POINT,
                     i nuovi valori saranno portati nello stato di modifica.

              Il  valore  di  ritorno è 0 tranne quando si specifica un'opzione non riconosciuta o è avvenuto un
              errore.

       break [n]
              Esce dall'interno di un ciclo for, while, until o  select.   Se  n  è  specificato,  interrompe  n
              livelli.   n  deve  essere  ≥  1.   Se n è più grande del numero di cicli racchiusi, tutti i cicli
              racchiusi vengono terminati.  Il valore di ritorno è 0 tranne quando n non è maggiore o  uguale  a
              1.

       builtin comando-incorporato [argomenti]
              Esegue  il  comando  incorporato  specificato,  passandogli  gli argomenti, e ritorna il suo stato
              d'uscita.  Questo è utile quando si desidera definire una funzione il cui nome è lo stesso  di  un
              comando  incorporato  della shell, ottenendo la funzionalità del comando incorporato attraverso la
              funzione.  Il comando incorporato cd è comunemente ridefinito in questo modo.  Lo stato di ritorno
              è falso se comando-incorporato non è un comando incorporato della shell.

       caller [expr]
              Restituisce  il  contesto  di qualsiasi chiamata di subroutine attiva (una funzione di shell o uno
              script eseguito coi comandi incorporati .  o source.  Senza expr, il caller mostra  il  numero  di
              riga  e  il  nome  di  file  di  origine  della chiamata di subroutine corrente.  Se un intero non
              negativo è fornito come expr, caller mostra il numero di riga, il nome di subroutine e il file  di
              origine  corrispondente  a  quella  posizione  nello  stack  delle chiamate di esecuzione.  Questa
              informazione aggiuntiva può essere usata, per esempio, per stampare una traccia dello  stack.   Il
              frame  corrente  è  il frame 0.  Il valore di ritorno è 0 tranne quando la shell non sta eseguendo
              una chiamata di subroutine o quando expr non corrisponde a una posizione valida nello stack  delle
              chiamate.

       cd [-L|[-P [-e]]] [dir]
              Cambia  la  directory  corrente  con  dir.   La variabile HOME è il dir predefinito.  La variabile
              CDPATH definisce i percorsi di ricerca per le directory che contengano  dir.   Nomi  di  directory
              alternative in CDPATH sono separate da due punti (:).  Un nome di directory nullo in CDPATH indica
              la directory corrente, cioè, ``.''.  Se dir inizia con una barra [/], allora CDPATH non  è  usato.
              L'opzione  -P  dice  di  usare  la  struttura di directory fisica invece di seguire i collegamenti
              simbolici (si veda anche l'opzione -P del comando incorporato set; l'opzione -L forza a seguire  i
              collegamenti  simbolici.   Se l'opzione -e viene fornita con -P, e la directory di lavoro corrente
              non può essere determinata con successo dopo un cambiamento di directory andato a  buon  fine,  cd
              ritornerà  uno  stato  di  insuccesso.  Un argomento - è equivalente a $OLDPWD.  Se viene usato il
              nome di una directory non vuota da CDPATH o se -  è  il  primo  argomento,  e  il  cambiamento  di
              directory  ha  successo,  il percorso completo della nuova directory di lavoro viene scritto sullo
              standard output.  Il valore di ritorno è 0 (vero) se la directory è stata cambiata  con  successo;
              falso altrimenti.

       command [-pVv] comando [arg ...]
              Esegue  comando  con  gli argomenti sopprimendo la normale ricerca tra le funzione di shell.  Sono
              eseguiti solo i comandi incorporati o comandi trovati in PATH.  Se è specificata l'opzione -p,  la
              ricerca  di  comando  viene  effettuata  usando  un  valore predefinito per PATH usando il quale è
              garantito che siano trovate tutte le utilità standard.  Se è fornita  l'opzione  -V  o  -v,  viene
              stampata  una  descrizione  di  comando.   L'opzione  -v provoca la visualizzazione di una singola
              parola che indica il comando o il nome di file usato per invocare comando;  l'opzione  -V  produce
              una  descrizione più completa.  Se è fornita l'opzione -V o -v, lo stato d'uscita è 0 se comando è
              stato trovato, e 1 altrimenti.  Se nessuna delle due opzioni è  fornita  e  avviene  un  errore  o
              comando  non  può  essere  trovato,  lo  stato  d'uscita è 127.  Altrimenti, lo stato d'uscita del
              comando incorporato command è lo stato d'uscita di comando.

        compgen [opzione] [parola]
              Genera possibili corrispondenze di completamento per parola in accordo con le opzioni, che possono
              essere  qualsiasi  opzione  accettata  dal comando incorporato complete ad eccezione di -p e -r, e
              scrive le corrispondenze sullo standard output.  Quando si usano le opzioni -F o  -C,  le  diverse
              variabili di shell impostate dai servizi di completamento programmabile, anche se disponibili, non
              conterranno valori utili.

              Le corrispondenze saranno generate come se il codice  di  completamento  programmabile  le  avesse
              generate direttamente da una specifica di completamento con gli stessi flag.  Se viene specificata
              parola, vengono mostrati solo i completamenti disponibili per parola.

              Il valore di ritorno è 0 (vero), tranne quando viene fornita un'opzione non valida,  o  non  viene
              generata alcuna corrispondenza.

       complete  [-abcdefgjksuv]  [-o  comp-option]  [-DE]  [-A  azione]  [-G  globpat] [-W lista_di_parole] [-F
       funzione] [-C comando]
              [-X filterpat] [-P prefisso] [-S suffisso] nome [nome ...]
       complete -pr [-DE] [nome ...]
              Specifica come devono essere completati gli argomenti per ogni nome.  Se viene  fornita  l'opzione
              -p  o  se non viene fornita alcuna opzione, le specifiche di completamento esistenti sono stampate
              in modo tale da  essere  riutilizzabili  come  input.   L'opzione  -r  rimuove  una  specifica  di
              completamento  per ogni nome o, se non è fornito alcun nome, tutte le specifiche di completamento.
              L'opzione -D indica che le rimanenti opzioni e azioni si dovrebbero applicare al completamento  di
              comando  ``predefinito'';  cioé,  il  completamento tentato su un comando per il quale non è stato
              definito precedentemente nessun completamento.  L'opzione -E  indica che le  rimanenti  opzioni  e
              azioni  si  dovrebbero  applicare  al  completamento  di  comando ``vuoto''; cioé il completamento
              tentato su una riga vuota.

              Il processo per applicare queste specifiche di completamento  quando  si  tenta  il  completamento
              della parola è descritto in precedenza, sotto Completamento programmabile.

              Altre  opzioni, se specificate, hanno i seguenti significati.  Gli argomenti alle opzioni  -G, -W,
              e -X (e, se  necessario  alle  opzioni   -P  e  -S)  dovrebbero  essere  quotati  per  proteggerli
              dall'espansione prima che venga invocato il comando incorporato complete.
              -o comp-option
                      L'opzione  comp-option  controlla  diversi  aspetti  del comportamento di comspec oltre la
                      semplice generazione di completamenti.  comp-option può essere uno di questi:
                      bashdefault
                              Effettua il resto dei completamenti predefiniti di  bash  se  comspec  non  genera
                              corrispondenze.
                      default Usa  il  completamento  del  nome  di  file predefinito di readline se comspec non
                              genera corrispondenze.
                      dirnames
                              Effettua  il  completamento  del  nome  di  directory  se   comspec   non   genera
                              corrispondenze.
                      filenames
                              Dice a readline che il comspec genera nomi di file, consentendo così di effettuare
                              qualsiasi elaborazione di uno specifico nome di file (come  aggiungere  una  barra
                              [/]  ai  nomi  di  directory,  quotare  caratteri  speciali o sopprimere gli spazi
                              finali).  Fatto per essere usato con le funzioni di shell.
                      nospace Dice a readline  di  non  aggiungere  uno  spazio  (che  viene  aggiunto  in  modo
                              predefinito) alle parole completate alla fine della riga.
                      plusdirs
                              Dopo  che le corrispondenze definite da comspec sono state generate, viene tentato
                              il completamento dei nomi di directory e il risultato viene aggiunto ai  risultati
                              delle altre azioni.
              -A azione
                      L'azione può essere una delle seguenti per generare una lista di possibili completamenti:
                      alias   Nome di alias.  Può anche essere specificata come -a.
                      arrayvar
                              Nomi di variabili di array.
                      binding Nomi di associazioni di tasti Readline.
                      builtin Nomi di comandi incorporati della shell.  Può anche essere specificata come -b.
                      command Nomi di comandi.  Può anche essere specificata come -c.
                      directory
                              Nomi di directory.  Può anche essere specificata come -d.
                      disabled
                              Nomi di comandi incorporati della shell disabilitati.
                      enabled Nomi di comandi incorporati della shell abilitati.
                      export  Nomi di variabili di shell esportate.  Può anche essere specificata come -e.
                      file    Nomi di file.  Può anche essere specificata come -f.
                      function
                              Nomi di funzioni di shell.
                      group   Nomi di gruppo.  Può anche essere specificata come -g.
                      helptopic
                              Argomenti di aiuto come accettati dal comando incorporato help.
                      hostname
                              Nomi di host, come presi dal file specificato dalla variabile di shell HOSTFILE.
                      job     Nomi di job, se il job-control è attivo.  Può anche essere specificata come -j.
                      keyword Parole riservate della shell.  Può anche essere specificata come -k.
                      running Nomi di job in esecuzione, se il job-control è attivo.
                      service Nome di servizi.  Può anche essere specificata come -s.
                      setopt  Argomenti validi per l'opzione -o del comando incorporato set.
                      shopt   Nomi di opzioni di shell come accettati dal comando incorporato shopt.
                      signal  Nomi di segnali
                      stopped Nomi di job sospesi, se il job-control è attivo.
                      user    Nomi di utente.  Può anche essere specificata come -u.
                      variable
                              Nomi di variabili di shell.  Può anche essere specificata come -v.
              -C comando
                      comando  viene eseguito in un ambiente di subshell, e il suo output viene usato come lista
                      di possibili completamenti.
              -F funzione
                      La funzione di shell funzione viene eseguita  nell'ambiente  di  shell  corrente.   Quando
                      finisce,  i  possibili  completamenti sono a disposizione nei valori della variabile array
                      COMPREPLY.
              -G globpat
                      Il modello di espansione dei nomi  di  percorso  globpat  viene  espanso  per  generare  i
                      possibili completamenti.
              -P prefisso
                      prefisso  è  aggiunto  all'inizio  di  ogni  possibile  completamento  dopo che sono state
                      applicate tutte le altre opzioni.
              -S suffisso
                      suffisso è aggiunto alla  fine  di  ogni  possibile  completamento  dopo  che  sono  state
                      applicate tutte le altre opzioni.
              -W wordlist
                      La wordlist è suddivisa usando i caratteri nella variabile speciale IFS come delimitatori,
                      e viene espansa ogni parola risultante.  I possibili completamenti sono gli elementi della
                      lista risultante che sono appropriati per la parola da completare.
              -X filterpat
                      filterpat  è  un  modello  come  quelli  usati  per  l'espansione del nome di percorso.  È
                      applicato all'elenco dei possibili completamenti generati dalle opzioni e dagli  argomenti
                      precedenti,  e  ogni  completamento che corrisponde a filterpat viene rimosso dall'elenco.
                      Un ! iniziale in filterpat nega il modello; in questo  caso  ogni  completamento  che  non
                      concorda con filterpat viene rimosso.

              Il  valore  di ritorno è 0 (vero) tranne quando viene fornita un'opzione non valida, viene fornita
              un'opzione all'infuori di -p o - r senza un argomento nome, viene fatto un tentativo di  rimuovere
              una  specifica  di completamento per un nome per il quale non vi sono specifiche, o se si verifica
              un errore aggiungendo una specifica di completamento.

       compopt [-o opzione] [-DE] [+o opzione] [nome]
              Modifica le opzioni di completamento per ogni nome secondo i valori di opzione  o,  se  non  viene
              fornito  un  nome,  per  il  completamento  in  esecuzione.   Se  non  viene data nessuna opzione,
              visualizza le opzioni di completamento per ogni nome o il  completamento  corrente.   I  possibili
              valori   di   opzione   sono   quelli   validi  per  il  comando  incorporato  complete  descritto
              precedentemente.   L'opzione  -D  indica  che  le  opzioni  rimanenti  dovrebbero  applicarsi   al
              completamento di comando ``predefinito''; cioé il completamento tentato su un comando per il quale
              non è stato precedentemente definito  un  completamento.   L'opzione  -E  indica  che  le  opzioni
              rimanenti  dovrebbero  applicarsi  al  completamento  di  comando ``vuoto''; cioé un completamento
              tentato su una riga vuota.

              Il valore di ritorno è vero, a meno che non venga fornita un'opzione non valida,  venga  fatto  un
              tentativo  per  modificare  le  opzioni  per  un  nome per il quale non esiste alcuna specifica di
              completamento, o accada un errore di output.

       continue [n]
              Riprende la successiva iterazione del ciclo for, while, until o select dentro cui si trova.  Se  n
              è  specificato,  riprende  all'n-esima  nidificazione  del  ciclo.  n deve essere ≥ 1.  Se n è più
              grande del numero di cicli nidificati, riprende dall'ultimo ciclo esistente (il ciclo a  più  alto
              livello).  Il valore di ritorno è 0 tranne quando n non è maggiore o uguale a 1.

       declare [-aAfFgilrtux] [-p] [nome[=valore] ...]
       typeset [-aAfFgilrtux] [-p] [nome[=valore] ...]
              Dichiara  variabili  e/o  dà  loro  degli  attributi.   Se il nome è omesso, mostra i valori delle
              variabili.  L'opzione -p mostra gli attributi e i valori di ogni nome.  Quando -p viene usato  con
              argomenti  nome,  vengono  ignorate  opzioni addizionali.  Quando -p viene fornito senza argomenti
              nome, visualizza gli attributi  e  i  valori  di  tutte  le  variabili  che  hanno  gli  attributi
              specificati  dalle  opzioni aggiuntive.  Se non viene fornita nessun'altra opzione con -p, declare
              visualizza gli attributi  e  i  valori  delle  varibili  di  shell.   L'opzione  -f  restringe  la
              visualizzazione   alle  funzioni  di  shell.   L'opzione  -F  inibisce  la  visualizzazione  delle
              definizioni di funzione; vengono stampati solo il nome della funzione  e  i  suoi  attributi.   Se
              l'opzione  di  shell extdebug è abilitata con shopt, il nome di file d'origine e il numero di riga
              dov'è  definita  la  funzione  vengono  anch'esse  visualizzati.   L'opzione  -F  sottintende  -f.
              L'opzione  -g forza la creazione o la modifica delle variabili globalmente, anche quando declare è
              eseguito in una funzione di shell.  È ignorato in tutti  gli  altri  casi.   Le  seguenti  opzioni
              possono  essere usate per restringere l'output alle sole variabili con gli attributi specificati o
              per assegnare attributi di variabili.
              -a     Ogni nome è una variabile array indicizzata (si veda Array sopra).
              -A     Ogni nome è una variabile array associativa (si veda Array sopra).
              -f     Usa solo nomi di funzioni.
              -i     La variabile è trattata come un intero; la  valutazione  aritmetica  (si  veda  VALUTAZIONE
                     ARITMETICA sopra) è effettuata quando alla variabile è assegnato un valore.
              -l     Quando alla variabile è assegnato un valore, tutti i caratteri maiuscoli sono convertiti in
                     minuscolo.  L'attributo upper-case è disabilitato.
              -r     Rende nomi accessibili in sola lettura.  A questi nomi non possono quindi essere  assegnati
                     valori  da  successive  istruzioni di assegnamento, e i valori assegnati non possono essere
                     rimossi.
              -t     Dà a ogni nome l'attributo trace.  Le funzioni tracciate ereditano i  segnali  intercettati
                     DEBUG e RETURN dalla shell chiamante.  L'attributo trace non ha un significato speciale per
                     le variabili.
              -u     Quando alla variabile è assegnato un valore, tutti i caratteri minuscoli sono convertiti in
                     maiuscolo.  L'attributo lower-case è disabilitato
              -x     Marca nomi per l'esportazione ai successivi comandi attraverso l'ambiente.

              Usare  `+'  invece  di  `-' disattiva l'attributo, con l'eccezione che +a non può essere usato per
              eliminare una variabile array e +r non rimuove l'attributo di sola lettura.  Quando usato  in  una
              funzione,  rende  ogni  nome  locale,  come  con  il  comando  local, a meno che non venga fornita
              l'opzione -g.  Se un nome di variabile è seguito da =valore, il valore della variabile è impostato
              a  valore.   Il  valore di ritorno è 0 tranne quando viene incontrata un'opzione non valida, viene
              fatto un tentativo di definire una funzione usando ``-f foo=bar'', un tentativo per  assegnare  un
              valore a una variabile in sola lettura, un tentativo per assegnare un valore a una variabile array
              senza usare la sintassi di assegnamento composto (si veda Array sopra) - uno dei  nomi  non  è  un
              nome valido di variabile di shell -, un tentativo per disattivare lo stato di sola lettura per una
              variabile in sola lettura, un tentativo per disattivate lo stato di array per una variabile array,
              o un tentativo per mostrare una funzione non esistente con -f.

       dirs [+n] [-n] [-clpv]
              Senza  opzioni,  mostra  la  lista  delle directory correntemente memorizzate.  La visualizzazione
              predefinita è su un singola riga coi nomi di directory  separate  da  spazi.   Le  directory  sono
              aggiunte alla lista con il comando pushd; il comando popd rimuove elementi dalla lista.
              +n     Mostra  l'n-esimo  elemento  contando  dalla sinistra della lista mostrata da dirs quando è
                     chiamato senza opzioni, partendo da zero.
              -n     Mostra l'n-esimo elemento contando dalla destra della  lista  mostrata  da  dirs  quando  è
                     chiamato senza opzioni, partendo da zero.
              -c     Svuota lo stack delle directory cancellando tutti gli elementi.
              -l     produce  un  elenco  più  lungo;  il formato predefinito per l'elencazione usa un carattere
                     tilde per indicare la home directory.
              -p     Stampa lo stack delle directory con un elemento per riga.
              -v     Stampa lo stack delle directory con un elemento per riga, anteponendo a  ogni  elemento  il
                     suo indice nello stack.

              Il  valore di ritorno è 0 tranne quando viene fornita un'opzione non valida o n un indice oltre la
              fine dello stack delle directory.

       disown [-ar] [-h] [jobspec ...]
              Senza opzioni, ogni jobspec viene rimosso  dalla  tabella  dei  job  attivi.   Se  jobspec  non  è
              presente, e non vengono forniti né -a-r, viene usata la nozione di shell del job corrente.  Se
              viene data l'opzione -h, ogni jobspec non viene rimosso dalla tabella, ma è marcato  in  modo  che
              SIGHUP  non  venga inviato al job se la shell riceve un SIGHUP.  Se non è presente alcun jobspec e
              non viene fornita né l'opzione -a né l'opzione  -r,  viene  usato  il  job  corrente.   Se  non  è
              specificata  alcuna  jobspec  l'opzione  -a  richiede la rimozione o il marcamento di tutti i job;
              l'opzione -r senza un argomento jobspec restringe l'operazione ai job in esecuzione.  Il valore di
              ritorno è 0 tranne quando jobspec non specifica un job valido.

       echo [-neE] [arg ...]
              Emette  gli  arg, separati da spazi, seguiti da un newline.  Lo stato di ritorno è sempre 0.  Se è
              specificato -n, il  newline  finale  è  soppresso.   Se  è  data  l'opzione  -e,  viene  abilitata
              l'interpretazione  dei  successivi  caratteri  preceduti  dal  carattere di protezione della barra
              inversa.  L'opzione -E disabilita l'interpretazione di questi caratteri di  protezione,  anche  su
              sistemi  dove  essi sono interpretati in modo predefinito.  L'opzione di shell xpg_echo può essere
              usata per determinare dinamicamente se  echo  espande  questi  caratteri  di  protezione  in  modo
              predefinito  oppure  no.   echo  non  interpreta  --  come fine delle opzioni.  echo interpreta le
              seguenti sequenze di protezione:
              \a     allarme (segnale acustico)
              \b     spazio indietro (backspace)
              \c     elimina ulteriore output
              \e
              \E     un caratteri di escape
              \f     nuova pagina (form feed)
              \n     nuova riga (newline)
              \r     ritorno carrello (carriage return)
              \t     segno di tabulazione orizzontale
              \v     segno di tabulazione verticale
              \\     barra inversa
              \0nnn  il carattere a otto bit il cui valore è il valore ottale nnn (da zero a tre cifre ottali)
              \xHH   il carattere a otto bit il cui  valore  è  il  valore  esadecimale  HH  (una  o  due  cifre
                     esadecimali)
              \uHHHH il  carattere  Unicode (ISO/IEC 10646) il cui valore è il valore esadecimale HHHH (da una a
                     quattro cifre)
              \UHHHHHHHH
                     il carattere Unicode (ISO/IEC 10646) il cui valore è il valore esadecimale HHHHHHHH (da una
                     a sei cifre)

       enable [-a] [-dnps] [-f nomefile] [nome ...]
              Abilita  e  disabilita  i  comandi  incorporati  della shell.  Disabilitare un comando incorporato
              permette l'esecuzione di un  comando  residente  su  disco  con  lo  stesso  nome  di  un  comando
              incorporato  della  shell  senza  dover  specificare  un  percorso  completo,  anche  se  la shell
              normalmente cerca i comandi incorporati prima di quelli su disco.  Se è  usato  -n,  ogni  nome  è
              disabilitato;  altrimenti,  nomi sono abilitati.  Per esempio, per usare il programma binario test
              trovato attraverso il PATH, invece della versione incorporata nella shell, si esegue  ``enable  -n
              test''.   L'opzione  -f  richiede  di  caricare  il  nuovo  comando  incorporato nome dall'oggetto
              condiviso nomefile, sui sistemi che supportano il caricamento dinamico.  L'opzione -d  elimina  un
              comando incorporato precedentemente caricato con -f.  Se nessun argomento nome è specificato, o se
              viene fornita l'opzione -p viene stampata una lista di tutti i comandi  incorporati  della  shell.
              Senza  altri  argomenti  di  opzione la lista è formata da tutti i comandi incorporati della shell
              abilitati.  Se è fornito -n, vengono stampati solo  i  comandi  incorporati  disabilitati.   Se  è
              fornito  -a, la lista stampata include tutti i comandi incorporati, con l'indicazione per ciascuno
              se è abilitato o no.  Se viene fornito -s, l'output è ristretto ai  comandi  incorporati  speciali
              POSIX.   Il valore di ritorno è 0 tranne quando nome non è un comando incorporato della shell o si
              verifica un errore nel caricamento di un nuovo comando incorporato da un oggetto condiviso.

       eval [arg ...]
              Gli arg sono letti e concatenati insieme formando un singolo comando.   Questo  comando  è  quindi
              letto  ed eseguito dalla shell, e il suo stato di uscita è ritornato come valore del comando eval.
              Se non vi è alcun arg, o vi sono solo argomenti nulli, eval ritorna 0.

       exec [-cl] [-a nome] [comando [argomenti]]
              Se comando è specificato, esso sostituisce la shell.  Nessun nuovo  processo  viene  creato.   Gli
              argomenti  diventano  gli  argomenti  per comando.  Se viene fornita l'opzione -l la shell pone un
              trattino all'inizio dell'argomento numero  zero  passato  a  comando.   Questo  è  quello  che  fa
              login(1).   L'opzione  -c provoca l'esecuzione di comando con un ambiente vuoto.  Se viene fornita
              -a la shell passa nome come argomento numero zero del comando eseguito.  Se comando non può essere
              eseguito  per  qualche  ragione,  una  shell non interattiva termina, a meno che non sia abilitata
              l'opzione di shell  execfail,  nel  qual  caso  restituisce  insuccesso.   Una  shell  interattiva
              restituisce  insuccesso  se  il  file  non  può  essere  eseguito.   Se comando non è specificato,
              qualsiasi ridirezione ha effetto nella shell corrente, e lo stato di ritorno è 0.  Se si  verifica
              un errore di ridirezione lo stato di ritorno è 1.

       exit [n]
              Causa  l'uscita  della  shell con uno stato d'uscita n.  Se n è omesso, lo stato d'uscita è quello
              dell'ultimo comando eseguito.  Un'intercettazione di segnale su EXIT è eseguita prima che la shell
              termini.

       export [-nf] [nome[=parola]] ...
       export -p
              I  nomi  forniti  sono marcati per l'esportazione automatica nell'ambiente dei comandi eseguiti in
              seguito.  Se è specificata l' opzione -f, i nomi si riferiscono a funzioni.  Se il nome è omesso o
              se  se  è  fornita  l'opzione  -p,  viene stampata una lista di tutti i nomi che sono esportati in
              questa shell.  L'opzione -n provoca la rimozione della proprietà di esportazione da ogni nome.  Se
              un  nome  di  variabile  è  seguito  da   =parola, il valore della variabile è impostato a parola.
              export ritorna uno stato d'uscita di 0 tranne quando viene trovata un'opzione non valida, uno  dei
              nomi  non è un nome valido di variabile di shell, o viene fornita l'opzione -f con un nome che non
              è il nome di una funzione.

       fc [-e nome-editor] [-nlr] [primo] [ultimo]
       fc -s [pat=rep] [cmd]
              Corregge un comando.  Nella prima forma, un  intervallo  di  comandi  fra  primo  e  ultimo  viene
              selezionato  dalla  lista  della  cronologia.   Primo e ultimo possono essere specificati come una
              stringa (per individuare l'ultimo comando che inizia con quella stringa) o come numero (un  indice
              nella  lista  della  cronologia,  dove un numero negativo è usato a partire dal numero del comando
              corrente).  Se ultimo non è specificato è impostato al comando corrente  per  l'elencazione  (così
              che  ``fc -l -10'' stampa gli ultimi 10 comandi) e a primo altrimenti.  Se primo non è specificato
              è impostato al precedente comando per la modifica e a -16 per l'elencazione.

              L'opzione -n sopprime i numeri dei comandi quando li elenca.  L'opzione -r  inverte  l'ordine  dei
              comandi.   Se  è  specificata  l'opzione  -l,  i  comandi  sono  elencati  sullo  standard output.
              Altrimenti, è invocato l'editor indicato da ename su un file  che  contiene  questi  comandi.   Se
              ename  è  omesso,  è usato il valore della variabile FCEDIT, e il valore di EDITOR se FCEDIT non è
              impostata.  Se né l'una né l'altra variabile  è  impostata,  è  usato  vi  Quando  la  modifica  è
              completata, i comandi modificati sono listati ed eseguiti.

              Nella  seconda  forma,  comando è rieseguito dopo che ogni istanza di pat è sostituita da rep.  Un
              utile alias da usare con questo è ``r="fc -s"'', così che digitando ``r cc''  si  esegue  l'ultimo
              comando che inizia con ``cc'' e battendo ``r'' si riesegue l'ultimo comando.

              Se  è  usata  la  prima  forma,  il valore di ritorno è 0 a meno che sia incontrata un'opzione non
              valida o primo o ultimo specifichino righe di cronologia fuori dall'intervallo  esistente.   Se  è
              fornita  l'opzione -e, il valore di ritorno è il valore dell'ultimo comando eseguito, o insuccesso
              se avviene un errore con il file temporaneo dei comandi.  Se è usata la seconda forma, lo stato di
              ritorno  è  quello  del comando rieseguito, tranne quando cmd non specifica una riga di cronologia
              valida, nel qual caso fc ritorna insuccesso.

       fg [jobspec]
              Riprende jobspec in primo piano, e lo rende il job corrente.  Se jobspec non è presente,  è  usata
              la  nozione della shell di job corrente.  Il valore di ritorno è quello del comando posto in primo
              piano, o insuccesso se eseguito mentre il  job-control  è  disabilitato  o,  quando  eseguito  col
              job-control  abilitato,  se jobspec non specifica un job valido o jobspec specifica un job che era
              stato avviato senza job-control.

       getopts optstring nome [args]
              getopts è usato dalle procedure di  shell  per  analizzare  i  parametri  posizionali.   optstring
              contiene  i  caratteri  delle opzioni che devono essere riconosciuti; se un carattere è seguito da
              due punti, l'opzione si aspetta di avere un argomento, che dovrà essere separato dalla  stessa  da
              spazi  bianchi.   I  due punti e il punto interrogativo non possono essere usati come caratteri di
              opzione.  Ogni volta che è invocato, getopts pone la successiva opzione nella variabile  di  shell
              nome,  inizializzando  nome  se  non  esiste, e l'indice del prossimo argomento da elaborare nella
              variabile OPTIND.  OPTIND è inizializzato a 1 ogni volta che la shell o uno script di shell  viene
              invocato.   Quando  un'opzione richiede un argomento, getopts pone quell'argomento nella variabile
              OPTARG.  La shell non reimposta OPTIND automaticamente; questa variabile deve  essere  manualmente
              reimpostata  tra  più  chiamate  a getopts dentro la stessa esecuzione della shell, se deve essere
              usato un nuovo insieme di parametri.

              Quando viene raggiunta la fine delle opzioni getopts esce con un valore  di  ritorno  maggiore  di
              zero.  OPTIND è impostato all'indice del primo argomento senza opzioni e nome viene impostato a ?.

              getopts  normalmente  analizza  i parametri posizionali, ma se più argomenti vengono dati in args,
              getopts analizza solo quelli.

              getopts può informare degli errori in due modi.  Se il primo  carattere  di  optstring  è  un  due
              punti,  è  usata un'informazione di errore silenziosa.  Normalmente i messaggi diagnostici vengono
              stampati quando vengono trovate opzioni non valide  o  mancano  argomenti  alle  opzioni.   Se  la
              variabile  OPTERR  è  impostata  a 0, nessun messaggio di errore viene mostrato, anche se il primo
              carattere di optstring non è due punti.

              Se è incontrata un'opzione non valida, getopts pone ? nel nome e, se  non  silenziosa,  stampa  un
              messaggio  di errore e annulla OPTARG.  Se getopts è silenziosa, il carattere di opzione trovato è
              posto in OPTARG e nessun messaggio diagnostico è stampato.

              Se un argomento richiesto non è trovato, e getopts non è silenziosa, un punto interrogativo (?)  è
              posto  in  nome,  OPTARG viene annullato, e viene stampato un messaggio diagnostico.  Se getopts è
              silenziosa, allora un carattere di due punti (:) è posto in nome e OPTARG è impostato al carattere
              di opzione trovato.

              getopts  ritorna  0  (vero)  se  viene trovata un'opzione, specificata o non specificata.  Ritorna
              falso se viene incontrata la fine delle opzioni o avviene un errore.

       hash [-lr] [-p nomefile] [-dt] [nome]
              Ogni volta che hash viene invocata, il percorso completo del comando nome è determinato ricercando
              le directory in $PATH e viene memorizzato. Ogni nome di percorso precedentemente memorizzato viene
              perso.  Se viene fornita l'opzione -p, non viene effettuata nessuna ricerca di percorso e nomefile
              è  usato  come  nome  completo  del  comando.   L'opzione -r fa sì che la shell dimentichi tutti i
              percorsi memorizzati.  L'opzione -d fa sì che la shell dimentichi i percorsi memorizzati  di  ogni
              nome.   Se  viene  fornita  l'opzione -t è stampato il percorso completo al quale corrisponde ogni
              nome.  Se vengono forniti argomenti multipli di nome con -t, il  nome  viene  stampato  prima  del
              percorso  completo indicizzato.  L'opzione -l provoca la visualizzazione dell'output in un formato
              riutilizzabile come input.  Se nessun  argomento  è  dato,  ed  è  fornito  solo  -l,  è  stampata
              l'informazione  circa  i comandi memorizzati.  Lo stato di ritorno è 0 (vero) tranne quando nome è
              irreperibile o viene fornita un'opzione non valida.

       help [-dms] [modello]
              Mostra utili informazioni sui i comandi incorporati.  Se modello è specificato, help  fornisce  un
              aiuto  dettagliato  su tutti i comandi che corrispondono al modello; altrimenti è stampato l'aiuto
              per tutti i comandi incorporati e le strutture di controllo della shell.
              -d     Visualizza una breve descrizione di ogni modello
              -m     Visualizza la descrizione di ogni modello in un formato simile a manpage
              -s     Visualizza solo una breve sintassi d'uso per ogni modello

              Lo stato di ritorno è 0 tranne quando nessun comando è individuato dal modello.

       history [n]
       history -c
       history -d scostamento
       history -anrw [nomefile]
       history -p arg [arg ...]
       history -s arg [arg ...]
              Senza opzioni, mostra la lista della cronologia dei comandi  con  i  numeri  di  riga.   Le  righe
              elencate  con un * sono state modificate.  Con l'argomento n elenca solo le ultime n righe.  Se la
              variabile di shell HISTTIMEFORMAT è impostata e non nulla, è usata  come  stringa  di  formato  di
              strftime(3) per mostrare la data/ora associata a ogni elemento della cronologia.  Nessuno spazio è
              interposto fra la data/ora formattata e la riga della cronologia.  Se è fornito nomefile, questo è
              usato come nome del file di cronologia; altrimenti, è usato il valore di HISTFILE.  Le opzioni, se
              fornite, hanno i seguenti significati:
              -c     Svuota l'elenco della cronologia eliminando tutti gli elementi.
              -d scostamento
                     Cancella l'elemento della cronologia alla posizione scostamento.
              -a     Accoda le ``nuove'' righe della cronologia (righe  della  cronologia  inserite  dall'inizio
                     della corrente sessione di bash) al file di cronologia.
              -n     Inserisce  le righe della cronologia non ancora lette dal file di cronologia nella corrente
                     lista della cronologia.  Queste sono le righe accodate al file  di  cronologia  dall'inizio
                     della corrente sessione di bash.
              -r     Legge il contenuto del file di cronologia e lo usa come cronologia corrente.
              -w     scrive  la cronologia corrente sul file di cronologia, sovrascrivendo il contenuto del file
                     di cronologia.
              -p     Effettua la sostituzione della cronologia sui seguenti arg  e  mostra  il  risultato  sullo
                     standard  output.   Non  conserva  il  risultato  nell'elenco  della  cronologia.  Ogni arg
                     dev'essere quotato per disabilitare la normale espansione della cronologia.
              -s     Memorizza gli arg nell'elenco della cronologia come un singolo comando.   L'ultimo  comando
                     nell'elenco della cronologia viene rimosso prima che gli arg vengano aggiunti.

              Se  la  variabile  HISTTIMEFORMAT  è  impostata, l'informazione data/ora associata a ogni elemento
              della cronologia viene scritta nel file della  cronologia,  marcato  col  carattere  di  commento.
              Quando  viene  letto  il file della cronologia, le righe che iniziano con un carattere di commento
              seguito immediatamente da una cifra sono interpretate come data e ora  della  riga  di  cronologia
              precedente.   Il  valore  di  ritorno  è  0  tranne quando viene incontrata un'opzione non valida,
              avviene un errore mentre si legge o  si  scrive  il  file  della  cronologia,  viene  fornito  uno
              scostamento  non valido come argomento a -d o l'espansione della cronologia fornita come argomento
              a -p non ha successo.

       jobs [-lnprs] [ jobspec ... ]
       jobs -x comando [ args ... ]
              La prima forma elenca i job attivi.  Le opzioni hanno i seguenti significati:
              -l     Elenca gli ID dei processi in aggiunta alle normali informazioni.
              -n     Mostra le informazioni solo sui job che hanno cambiato stato dall'ultima notifica di  stato
                     mostrata all'utente.
              -p     Elenca solo l'ID di processo del principale job del gruppo di processo.
              -r     Restringe l'output ai job in esecuzione.
              -s     Restringe l'output ai job sospesi.

              Se  jobspec è specificato, l'output è limitato alle informazioni su quel job.  Lo stato di ritorno
              è 0 a meno che venga incontrata un'opzione non valida o sia fornito un jobspec non valido.

              Se è fornita l'opzione -x, jobs sostituisce qualsiasi jobspec trovato in comando  o  args  con  il
              corrispondente  ID del gruppo di processo, ed esegue comando passandogli args, e ritornando il suo
              stato d'uscita.

       kill [-s sigspec | -n signum | -sigspec] [pid | jobspec] ...
       kill -l [sigspec | stato d'uscita]
              Manda il segnale indicato da sigspec o signum al processo indicato da pid o jobspec.  sigspec è  o
              un  nome  di  segnale,  senza distinzione tra maiuscole e minuscole, come SIGKILL, (con o senza il
              prefisso SIG) o un numero di segnale; signum è un numero di segnale.  Se sigspec non  è  presente,
              si  suppone  essere  SIGTERM.   Un  argomento -l elenca i nomi dei segnali.  Se sono forniti degli
              argomenti quando è specificata l'opzione -l, sono elencati i nomi dei segnali corrispondenti  agli
              argomenti,  e lo stato di ritorno è 0.  L'argomento stato d'uscita di -l è un numero che specifica
              o un numero di segnale o lo  stato  d'uscita  di  un  processo  terminato  da  un  segnale.   kill
              restituisce  0  (vero)  se  almeno  un segnale è stato inviato con successo, o falso se avviene un
              errore o se è incontrata un'opzione non valida.

       let arg [arg ...]
              Ogni arg è un'espressione aritmetica che deve essere  valutata  (si  veda  VALUTAZIONE  ARITMETICA
              sopra) Se l'ultimo arg viene valutato 0, let ritorna 1; altrimenti è ritornato 0.

       local [opzione] [nome[=valore] ...]
              Per  ogni  argomento  viene creata una variabile locale chiamata nome e le viene assegnato valore.
              L'opzione può essere una qualunque delle opzioni accettate  da  declare.   Quando  local  è  usato
              dentro  una funzione, fa sì che la variabile nome abbia una visibilità ristretta a quella funzione
              e ai suoi figli.  Senza alcun operando, local scrive una lista di variabili locali sullo  standard
              output.   È  un  errore  usare local quando non si è dentro una funzione.  Lo stato di ritorno è 0
              tranne quando local è usata fuori da una funzione, viene fornito un nome non valido o nome  è  una
              variabile in sola lettura.

       logout Termina una shell di login.

       mapfile [-n numero] [-O origine] [-s numero] [-t] [-u fd] [-C callback] [-c quantum] [array]
       readarray [-n numero] [-O origine] [-s numero] [-t] [-u fd] [-C callback] [-c quantum] [array]
              Legge  righe  dallo  standard  input  all'interno  della  variabile array indicizzata array, o dal
              descrittore di file fd se viene fornita l'opzione -u.  La variabile MAPFILE è l'array predefinito.
              Le opzioni, se fornite, hanno il seguente significato:
              -n     Copia al massimo numero righe.  Se numero è 0 vengono copiate tutte le righe.
              -O     Inizia assegnando array all'indice origine.  L'indice predefinito è 0.
              -s     Ignora le prime numero righe lette.
              -t     Rimuove il "newline" finale da ogni riga letta.
              -u     Legge le righe dal descrittore di file fd invece che dallo standard input.
              -C     Valuta  callback  ogni  volta  che  vengono  lette  quantum  righe.  L'opzione -c specifica
                     quantum.
              -c     Specifica il numero di righe lette tra una chiamata e l'altra di callback.

              Se -C è specificato senza -c, il quantum predefinito è 5000.  Quando callback  è  valutato,  viene
              fornito  l'indice  del  successivo  elemento  di  array  da  assegnare  e  la riga da attribuire a
              quell'elemento come argomenti aggiuntivi.  callback viene valutato dopo che la riga è stata letta,
              ma prima che l'elemento di array sia stato assegnato.

              Se non è fornito con un'origine esplicita, mapfile azzera array prima della relativa assegnazione.

              mapfile  ritorna successo, a meno che non vengano forniti un'opzione o un argomento di opzione non
              validi, array sia non valido o non assegnabile, oppure se array non è un array indicizzato.

       popd [-n] [+n] [-n]
              Rimuove degli elementi dallo stack delle directory.  Senza argomenti, rimuove la directory in cima
              allo  stack,  ed  effettua  un  cd verso la nuova directory in cima allo stack.  Gli argomenti, se
              forniti, hanno il seguente significato:
              -n     Sopprime il normale cambiamento di directory quando rimuove directory  dallo  stack,  ossia
                     viene manipolato solo lo stack.
              +n     Rimuove  l'n-esimo  elemento contando dalla sinistra della lista mostrata da dirs, partendo
                     da zero.  Per esempio: ``popd +0'' rimuove la prima directory, ``popd +1'' la seconda.
              -n     Rimuove l'n-esimo elemento contando dalla destra della lista mostrata da dirs, partendo  da
                     zero.  Per esempio: ``popd -0'' Rimuove l'ultima directory, ``popd -1'' la penultima.

              Se  il  comando popd ha successo, viene anche effettuato un dirs, e lo stato di ritorno è 0.  popd
              ritorna falso se viene incontrata un'opzione non valida, lo  stack  delle  directory  è  vuoto,  è
              specificato un elemento non esistente nello stack delle directory, o il cambio di directory non ha
              successo.

       printf [-v var] formato [argomenti]
              Scrive gli argomenti formattati sullo  standard  output  sotto  il  controllo  del  formato.   Con
              l'opzione  -v  l'output  viene  assegnato  alla  variabile var piuttosto che essere stampato sullo
              standard output.

              Il formato è una stringa di caratteri che contiene tre tipi  di  oggetti:  caratteri  semplici,  i
              quali  sono semplicemente copiati sullo standard output, sequenze di protezione dei caratteri, che
              sono convertite e copiate sullo standard output, e  specifiche  di  formato,  ognuna  delle  quali
              provoca  la  stampa dell'argomento seguente.  Oltre alle specifiche di formato printf(1) standard,
              printf interpreta le seguenti estensioni:
              %b     fa sì che printf espanda le sequenze di protezione tramite la barra inversa  nell'argomento
                     corrispondente  (con l'eccezione che \c fa terminare l'output, le barre inverse in \', \" e
                     \? non sono rimosse e gli escape ottali che  iniziano  con  \0  possono  contenere  fino  a
                     quattro cifre).
              %q     fa sì che printf stampi sull'output l'argomento corrispondente in un formato riutilizzabile
                     come input di shell.
              %(datefmt)T
                     fa sì che printf stampi sull'output la stringa data-ora che  risulta  dall'uso  di  datefmt
                     come stringa di formato per strftime(3).  L'argomento corrispondente è un numero intero che
                     rappresenta il numero di secondi trascorso dall'epoca.  Possono essere usati due valori  di
                     argomento  speciali:  -1  rappresenta  il tempo attuale e -2 rappresenta il tempo in cui la
                     shell è stata invocata.

              Argomenti alle specifiche di formato non stringa sono trattati come costanti  C,  con  l'eccezione
              che  un  segno  meno  o  più  iniziale  è permesso, e che se il carattere iniziale coincide con un
              apostrofo o con delle virgolette, il valore è quello ASCII del carattere che segue.

              Il formato è riutilizzato più volte fino all'esaurimento degli argomenti.  Se il formato  richiede
              più  argomenti di quelli forniti, le specifiche di formato extra si comportano come se fosse stato
              fornito, a seconda del caso, il valore zero o una stringa nulla.  Il valore di ritorno è 0 in caso
              di successo, diverso da zero in caso di insuccesso.

       pushd [-n] [+n] [-n]
       pushd [-n] [dir]
              Aggiunge  una  directory  in  cima allo stack delle directory, o ruota lo stack, rendendo la nuova
              cima dello stack la corrente directory di lavoro.  Senza argomenti, scambia le  due  directory  in
              cima  e  ritorna 0, a meno che lo stack delle directory non sia vuoto.  Gli argomenti, se forniti,
              hanno il seguente significato:
              -n     Sopprime il normale cambio di directory quando se ne aggiungono allo stack, cosicché  viene
                     manipolato solo lo stack.
              +n     Ruota  lo stack così che la n-esima directory (contando dalla sinistra della lista mostrata
                     da dirs, partendo da zero) vada in cima.
              -n     Ruota lo stack così che la n-esima directory (contando da destra della  lista  mostrata  da
                     dirs, partendo da zero) vada in cima.
              dir    Aggiunge  dir  in  cima allo stack delle directory, rendendola la nuova directory di lavoro
                     corrente.

              Se il comando pushd ha successo, viene anche effettuato un dirs.  Se è usata la prima forma, pushd
              ritorna  0  a  meno che il cd verso dir non abbia successo.  Con la seconda forma, pushd ritorna 0
              tranne quando lo stack delle directory è vuoto, è specificato  un  elemento  non  esistente  nello
              stack delle directory, o il cambiamento di directory verso la nuova directory corrente specificata
              non ha successo.

       pwd [-LP]
              Stampa il percorso assoluto della corrente directory di lavoro.  Il percorso stampato non contiene
              alcun  collegamento  simbolico  se  è  fornita  l'opzione  -P  o  l'opzione -o physical al comando
              incorporato set è abilitata.  Se viene usata l'opzione  -L  il  percorso  stampato  può  contenere
              collegamenti  simbolici.   Lo stato di ritorno è 0 tranne quando avviene un errore mentre si legge
              il percorso della directory corrente o viene fornita un'opzione non valida.

       read [-ers] [-a aname] [-d delim] [-i testo] [-n nchars] [-N nchars] [-p prompt]  [-t  tempo_limite]  [-u
       fd] [nome ...]
              Viene  letta  una  riga  dallo standard input, o dal descrittore di file fd fornito come argomento
              dell'opzione -u, e la prima parola è assegnata al primo nome, la seconda parola al secondo nome, e
              così  via, e le parole rimaste, compresi i separatori, sono assegnate all'ultimo nome.  Se ci sono
              meno parole lette dalla riga di input che nomi, ai nomi rimanenti vengono assegnati valori  nulli.
              I  caratteri in IFS sono usati per suddividere la riga in parole.  Il carattere di barra inversa \
              può essere usato per rimuovere qualsiasi significato speciale dal successivo carattere letto e per
              la continuazione di riga.  Le opzioni, se fornite, hanno il seguente significato:
              -a aname
                     Le  parole  sono assegnate a indici sequenziali della variabile array aname, partendo da 0.
                     aname viene annullata prima dell'assegnamento  dei  nuovi  valori.   Altri  argomenti  nome
                     vengono ignorati.
              -d delim
                     Il primo carattere di delim è usato per far terminare la riga di input, invece di newline.
              -e     Se  lo  standard input viene da un terminale, readline (si veda READLINE sopra) è usato per
                     ottenere la riga.  Readline usa le impostazioni correnti per la modifica (o predefinite, se
                     la modifica di riga non era precedentemente attiva).
              -i testo
                     Se  readline  è  in uso per leggere la riga, testo viene messo nel buffer di modifica prima
                     che inizi la correzione.
              -n nchars
                     read è considerata completata dopo aver letto nchars caratteri invece di aspettare una riga
                     di input completa, ma rispetta un delimitatore se prima del delimitatore sono letti meno di
                     nchars caratteri.
              -N nchars
                     read è considerata completata dopo  aver  letto  esattamente  nchars  caratteri  invece  di
                     aspettare  una  riga  di input completa, a meno che non sia stato trovato un EOF o read sia
                     fuori tempo massimo.  I caratteri di delimitazione nell'input non vengono trattati in  modo
                     speciale  e  non  provocano  il  completamento  di  read  finché  non  vengono letti nchars
                     caratteri.
              -p prompt
                     Visualizza prompt sullo standard error, senza  un  newline  finale,  prima  di  tentare  di
                     leggere qualsiasi input.  Il prompt è mostrato solo se l'input proviene da un terminale.
              -r     La  barra  inversa  non fa da carattere di protezione.  La barra inversa è considerato come
                     parte della riga.  In particolare, una coppia barra_inversa-newline non  può  essere  usata
                     come una continuazione di riga.
              -s     Modalità  silenziosa.   Se  l'input  viene  da un terminale i caratteri immessi non vengono
                     visualizzati sul terminale.
              -t tempo_limite
                     Fa sì che read vada fuori tempo massimo e ritorni insuccesso se un riga completa  di  input
                     non viene letta entro tempo_limite secondi.  tempo_limite può essere un numero decimale con
                     una parte frazionaria dopo il separatore decimale.  Quest'opzione produce effetti  solo  se
                     read  sta  leggendo  l'input  da un terminale, da una pipe o da un altro file speciale; non
                     produce effetti quando legge da file regolari.  Se tempo_limite è 0, read ritorna  successo
                     se  l'input  è  disponibile nel descrittore di file specificato, insuccesso altrimenti.  Lo
                     stato d'uscita è maggiore di 128 se viene superato il limite di tempo.
              -u fd  Legge l'input dal descrittore di file fd.

              Se non sono forniti nomi la riga viene assegnata alla variabile REPLY.  Lo  stato  d'uscita  è  0,
              tranne  quando  viene  raggiunta  la fine del file, read esaurisce il tempo limite consentito (nel
              qual caso lo stato d'uscita è maggiore di 128) o viene fornito un descrittore di file  non  valido
              come argomento a -u.

       readonly [-aAf] [-p] [nome[=parola] ...]
              I  nomi  dati  sono  da  considerare  in  sola lettura; i valori di questi nomi non possono essere
              cambiati dagli assegnamenti successivi.  Se è fornita l'opzione -f, sono così marcate le  funzioni
              corrispondenti  ai nomi.  L'opzione -a restringe le variabili agli array indicizzati; l'opzione -A
              restringe le variabili agli array associativi.  Se vengono fornite entrambe le opzioni, -A  ha  la
              precedenza.   Se  nessun  argomento  nome  è dato, o se è fornita l'opzione -p, viene stampata una
              lista di tutti i nomi in sola lettura.  Le altre opzioni  possono  essere  usate  per  restringere
              l'output  a  una  sotto-serie  della  serie  di  nomi  in  sola  lettura.  L'opzione -p provoca la
              visualizzazione dell'output in un formato riutilizzabile come input.  Se un nome  di  variabile  è
              seguito da =parola il valore della variabile è impostato a parola.  Lo stato di ritorno è 0 tranne
              quando è incontrata un'opzione non valida, uno dei nomi non  è  un  nome  di  variabile  di  shell
              valido, o viene fornita l'opzione -f con un nome che non è una funzione.

       return [n]
              Fa sì che una funzione esca con il valore di ritorno specificato da n.  Se n è omesso, lo stato di
              ritorno è quello dell'ultimo comando eseguito nel corpo della funzione.  Se  usato  fuori  da  una
              funzione, ma durante l'esecuzione di uno script tramite il comando .  (source), fa sì che la shell
              smetta di eseguire quello script e ritorni o n o lo stato d'uscita  dell'ultimo  comando  eseguito
              dentro  lo  script come stato d'uscita dello script.  Se usato fuori da una funzione e non durante
              l'esecuzione di uno script per mezzo di .,  lo  stato  di  ritorno  è  falso.   Qualsiasi  comando
              associato  alla gestione del segnale RETURN viene eseguito prima che l'esecuzione riprenda dopo la
              funzione o script.

       set [--abefhkmnptuvxBCEHPT] [-o opzione-nome] [arg ...]
       set [+abefhkmnptuvxBCEHPT] [+o opzione-nome] [arg ...]
              Senza opzioni, il nome e il valore di ogni variabile di shell vengono visualizzati in  un  formato
              riutilizzabile  come  input  per  impostare  o reimpostare le variabili attualmente impostate.  Le
              variabili in sola lettura non possono essere reimpostate.  In modalità posix sono elencate solo le
              variabili  di  shell.   L'output  è  ordinato  in  base alla localizzazione corrente.  Quando sono
              specificate opzioni, queste impostano o annullano attributi di shell.  Gli argomenti che rimangono
              dopo  che  le opzioni sono state elaborate sono trattati come valori per i parametri posizionali e
              vengono assegnati, nell'ordine, a $1, $2, ...  $n.  Le opzioni, se specificate, hanno  i  seguenti
              significati:
              -a      Automaticamente  marca  le  variabili  e le funzioni che sono modificate o create, come da
                      esportare verso l'ambiente dei comandi successivi.
              -b      Riporta immediatamente lo stato dei job in  background  terminati,  invece  che  prima  di
                      stampare  il  prossimo  prompt  primario.  Questo è applicabile solo quando è abilitato il
                      job-control.
              -e      Esce immediatamente se una pipeline (che può consistere di un singolo  comando  semplice),
                      un  comando  di subshell tra parentesi, o uno dei comandi eseguiti come parte di un elenco
                      di comandi racchiuso fra parentesi graffe (si veda GRAMMATICA DELLA SHELL  sopra)  termina
                      con  uno  stato  diverso  da zero.  La shell non esce se il comando che non ha successo fa
                      parte di un elenco di comandi che segue subito dopo una parola chiave while o until, se fa
                      parte  di  un  controllo che segue le parole riservate if o elif, se fa parte di qualsiasi
                      comando eseguito in una lista && o || tranne il comando che segue && o  ||  finali,  o  di
                      qualsiasi comando in una pipeline esclluso l'ultimo, o se il valore di ritorno del comando
                      è stato negato con !.  Un comando sul segnale intercettato ERR, se impostato,  è  eseguito
                      prima  dell'uscita  della shell.  Questa opzione si applica all'ambiente di shell e a ogni
                      ambiente di subshell separatamente (si veda AMBIENTE DI ESECUZIONE DEL COMANDO  sopra),  e
                      può  provocare  l'uscita  delle  subshell  prima  di  aver  eseguito tutti i comandi nella
                      subshell.
              -f      Disabilita l'espansione di percorso.
              -h      Ricorda la posizione dei comandi man mano che sono ritrovati per l'esecuzione.   Questa  è
                      abilitata in modo predefinito.
              -k      Tutti gli argomenti nella forma di istruzioni di assegnamento sono posti nell'ambiente per
                      un comando, non solo quelli che precedono il nome del comando stesso.
              -m      Modo monitor.  Il job-control è abilitato.  Quest'opzione è attiva in modo predefinito per
                      le  shell  interattive,  su  sistemi  che  lo  supportano  (si veda JOB-CONTROL sopra).  I
                      processi in background girano in un gruppo di processo separato e una riga che contiene il
                      loro stato d'uscita viene stampata al termine della loro esecuzione.
              -n      Legge  i  comandi ma non li esegue.  Questo può essere usato per controllare uno script di
                      shell per errori di sintassi.  Questo viene ignorato se la shell è interattiva.
              -o nome-opzione
                      Il nome-opzione può essere uno dei seguenti:
                      allexport
                              Lo stesso di -a.
                      braceexpand
                              Lo stesso di -B
                      emacs   Usa una interfaccia di modifica della riga di comando in stile  emacs.   Questo  è
                              abilitato  in  modo predefinito quando la shell è interattiva, a meno che la shell
                              non  sia  avviata   con   l'opzione   --noediting.    Questo   inoltre   influisce
                              sull'interfaccia di modifica usata per read -e.
                      errexit Lo stesso di -e.
                      errtrace
                              Lo stesso di -E.
                      functrace
                              Lo stesso di -T.
                      hashall Lo stesso di -h.
                      histexpand
                              Lo stesso di -H.
                      history Abilita la cronologia dei comandi, come descritto in precedenza, sotto CRONOLOGIA.
                              Questa opzione è attiva in modo predefinito nelle shell interattive.
                      ignoreeof
                              L'effetto  è  lo  stesso  come  se  fosse  stato  eseguito  il  comando  di  shell
                              ``IGNOREEOF=10'' (si veda Variabili di shell sopra).
                      keyword Lo stesso di -k.
                      monitor Lo stesso di -m.
                      noclobber
                              Lo stesso di -C.
                      noexec  Lo stesso di -n.
                      noglob  Lo stesso di -f.
                      nolog   Attualmente ignorato.
                      notify  Lo stesso di -b.
                      nounset Lo stesso di -u.
                      onecmd  Lo stesso di -t.
                      physical
                              Lo stesso di -P.
                      pipefail
                              Se impostato, il valore di ritorno di una pipeline è il valore dell'ultimo comando
                              (quello più a destra) che esce con uno stato d'uscita diverso da zero, o  zero  se
                              tutti   i   comandi  nella  pipeline  escono  con  successo.   Come  comportamento
                              predefinito, questa opzione è disabilitata.
                      posix   Cambia il comportamento di bash quando  il  comportamento  predefinito  differisce
                              dallo standard POSIX per adeguarlo allo (modalità posix).
                      privileged
                              Lo stesso di -p.
                      verbose Lo stesso di -v.
                      vi      Usa  un'interfaccia di modifica della riga di comando in stile vi.  Questo inoltre
                              influisce sull'interfaccia di modifica usata per read -e.
                      xtrace  Lo stesso di -x.
                      Se -o è fornito con nessun nome-opzione, sono stampati i valori  delle  opzioni  correnti.
                      Se  +o  è  fornito  con  nessun  nome-opzione,  una  serie  di comandi set per ricreare le
                      impostazioni dell'opzione corrente viene visualizzata sullo standard output.
              -p      Attiva il modo privilegiato.  In  questo  modo,  i  file  $ENV  e  $BASH_ENV  non  vengono
                      elaborati, le funzioni di shell non sono ereditate dall'ambiente e le variabili SHELLOPTS,
                      BASHOPTS, CDPATH e GLOBIGNORE se appaiono in un ambiente, vengono ignorate.  Se la shell è
                      avviata  con  l'id  (gruppo)  effettivo  dell'utente  non  uguale  all'id  (gruppo)  reale
                      dell'utente, e non viene fornita l'opzione -p,  queste  azioni  vengono  eseguite  e  l'id
                      effettivo dell'utente è impostato all'id reale dell'utente.  Se viene fornita l'opzione -p
                      all'avvio, l'id effettivo dell'utente non è reimpostato.  Disattivare questa opzione fa sì
                      che  gli id effettivi dell'utente e del gruppo siano impostati agli id reali dell'utente e
                      del gruppo.
              -t      Esce dopo aver letto ed eseguito un comando.
              -u      Tratta le variabili e i parametri non impostati, diversi dai parametri speciali "@" e "*",
                      come  un  errore  quando effettua l'espansione di parametro.  Se l'espansione è tentata su
                      una variabile o parametro non impostato, la shell stampa un messaggio di errore e, se  non
                      interattiva, esce con uno stato diverso da zero.
              -v      Stampa le righe in input alla shell appena sono lette.
              -x      Dopo  l'espansione  di  ogni comando semplice, comando for, comando case, comando select o
                      comando for aritmetico, mostra il valore espanso di PS4, seguito dal comando  e  dai  suoi
                      argomenti espansi o dall'elenco di parole associate.
              -B      La  shell effettua l'espansione delle parentesi graffe (si veda Espansione delle parentesi
                      graffe sopra).  Questo è attivo in modo predefinito.
              -C      Se impostato, bash non sovrascrive un file esistente con gli operatori di  ridirezione  >,
                      >&  e  <>.   Una sovrascrittura può ancora essere ottenuta creando i file di output usando
                      l'operatore di ridirezione >| al posto di >.
              -E      Se impostato,  ogni  segnale  intercettato  ERR  è  ereditato  dalle  funzioni  di  shell,
                      sostituzioni  di  comando  e  comandi  eseguiti  in  un  ambiente di subshell.  Il segnale
                      intercettato ERR non viene normalmente ereditato in questi casi.
              -H      Abilita la sostituzione della cronologia in stile  !.   Quest'opzione  è  attiva  in  modo
                      predefinito quando la shell è interattiva.
              -P      Se  impostato,  non  segue  i  collegamenti  simbolici  quando  esegue comandi come cd che
                      cambiano la directory di lavoro corrente.   È  invece  usata  la  struttura  di  directory
                      fisica.  Come  comportamento predefinito, bash segue la successione logica delle directory
                      quando si eseguono comandi che cambiano la directory corrente.
              -T      Se impostata, i comandi sui segnali intercettati  DEBUG  e  RETURN  sono  ereditati  dalle
                      funzioni  di shell, dalle sostituzioni di comando e dai comandi eseguiti in un ambiente di
                      subshell.  I segnali intercettati DEBUG e RETURN  normalmente  non  vengono  ereditati  in
                      questi casi.
              --      Se  nessun  argomento  segue  questa opzione, allora i parametri posizionali sono assenti.
                      Altrimenti, i parametri posizionali sono impostati agli  arg,  anche  se  alcuni  di  loro
                      iniziano con un -.
              -       Segnala  la  fine  delle  opzioni,  e  fa  sì che tutti i rimanenti arg siano assegnati ai
                      parametri posizionali.  Le opzioni -x e -v sono disattivate.  Se non vi  è  alcun  arg,  i
                      parametri posizionali rimangono inalterati.

              Le  opzioni  sono  disattivate  in  modo  predefinito  se  non  specificato diversamente.  Usare +
              piuttosto che - causa la disattivazione di  queste  opzioni.   Le  opzioni  possono  anche  essere
              specificate  come  argomenti  a  un'invocazione  della  shell.  Il corrente insieme di opzioni può
              essere trovato in $-.  Lo stato di ritorno è sempre 0 (vero) a meno che non si incontri un'opzione
              non valida.

       shift [n]
              I  parametri  posizionali da n+1 ... sono rinominati $1 ....  I parametri rappresentati dai numeri
              $# fino a $#-n+1 non sono impostati.  n dev'essere un numero non negativo minore o  uguale  a  $#.
              Se  n  è  0,  nessun parametro viene cambiato.  Se n è omesso, è considerato valere 1.  Se n è più
              grande di $#, i parametri posizionali non sono cambiati.  Lo stato di ritorno è più grande di 0 se
              n è più grande di $# o minore di 0; altrimenti 0.

       shopt [-pqsu] [-o] [optname ...]
              Attiva/disattiva  i  valori  di  variabili che controllano il comportamento opzionale della shell.
              Senza opzioni, o con l'opzione -p, viene mostrata una lista di tutte le opzioni  impostabili,  con
              una  indicazione  se ognuna è impostata o no.  L'opzione -p fa sì che l'output sia mostrato in una
              forma che può essere riutilizzata come input.  Altre opzioni hanno il seguente significato:
              -s     Abilita (attiva) ogni optname.
              -u     Disabilita (disattiva) ogni optname.
              -q     Sopprime il normale output (modalità silenziosa); lo stato di ritorno indica se il  optname
                     è  attivato  o  non  attivato.  Se sono dati argomenti optname multipli con -q, lo stato di
                     ritorno è 0 se tutti gli optname sono attivati; diverso da zero altrimenti.
              -o     Restringe i valori di optname a quelli definiti per l'opzione -o  del  comando  incorporato
                     set.

              Se  una delle opzioni -s o -u viene usata senza argomenti optname, la visualizzazione è limitata a
              quelle opzioni che sono, rispettivamente, attivate o non attivate.  Se non  diversamente  indicato
              le opzioni shopt sono disabilitate (non attivate) in modo predefinito.

              Lo stato di ritorno quando vengono elencate delle opzioni è 0 se tutti gli optname sono abilitati,
              altrimenti è diverso da zero.  Quando si impostano o si rimuovono opzioni, lo stato di ritorno è 0
              tranne quando optname non è una valida opzione di shell.

              L'elenco delle opzioni di shopt è:

              autocd  Se  impostato,  viene  eseguito  un nome di comando che è il nome di una directory come se
                      fosse un  argomento  del  comando  cd.   Questa  opzione  viene  usata  solo  dalle  shell
                      interattive.
              cdable_vars
                      Se  impostata,  un  argomento  al  comando  incorporato  cd  che  non  sia una directory è
                      considerato come il nome di una variabile il cui valore è la directory verso cui cambiare.
              cdspell Se impostata, vengono corretti errori minori nell'ortografia di un componente di directory
                      in un comando cd.  Gli errori ricercati sono caratteri invertiti, mancanza di un carattere
                      e un carattere in più.  Se viene trovata una correzione il nome  di  file  corretto  viene
                      stampato e il comando prosegue.  Quest'opzione è usata solo dalle shell interattive.
              checkhash
                      Se  impostata,  bash  controlla che un comando trovato in una tabella hash esista prima di
                      tentarne l'esecuzione.  Se un comando la cui posizione è disponibile in un elemento  della
                      tabella hash non esiste più, viene effettuata una normale ricerca di percorso.
              checkjobs
                      Se  impostato,  bash  elenca lo stato dei job in esecuzione e di quelli terminati prima di
                      uscire da una shell interattiva.  Se vi sono job in esecuzione, l'uscita  verrà  rimandata
                      fino  a  quando  non  viene tentata una seconda uscita senza che intervenga un comando (si
                      veda JOB CONTROL sopra).  La shell ritarda sempre  l'uscita  se  un  qualsiasi  job  viene
                      fermato.
              checkwinsize
                      Se  impostata,  bash  controlla  la  dimensione  della  finestra  dopo  ogni comando e, se
                      necessario, aggiorna i valori di LINES e COLUMNS.
              cmdhist Se impostata, bash tenta di salvare tutte le righe di un comando  a  riga  multipla  nello
                      stesso elemento di cronologia.  Questo facilita la ripetizione di comandi multiriga.
              compat31
                      Se  impostata,  bash  cambia  il  suo comportamento a quello della versione 3.1 per quanto
                      riguarda gli argomenti "quotati" dell'operatore =~ del comando condizionale
                       [[.
              compat32
                      Se impostata, bash cambia il suo comportamento a quello  della  versione  3.2  per  quanto
                      riguarda  il  confronto  di  stringhe  specifiche della localizzazione quando si usano gli
                      operatori < e >  del comando condizionale [[.  Le versioni di Bash precedenti  a  bash-4.1
                      usano la collazione ASCII e strcmp(3); bash-4.1 e versioni successive usano la sequenza di
                      collazione della localizzazione corrente e strcoll(3).
              compat40
                      Se impostata, bash cambia il suo comportamento a quello  della  versione  4.0  per  quanto
                      riguarda  il  confronto  di  stringhe  specifiche della localizzazione quando si usano gli
                      operatori < e > del comando condizionale [[ (si  veda  la  voce  precedente)  e  l'effetto
                      dell'interruzione di una lista di comandi.
              compat41
                      Se  impostata,  bash, quando è in modalità posix, tratta un apostrofo in una espansione di
                      parametro tra virgolette come un carattere speciale.  Gli apostrofi devono  corrispoondere
                      (un  numero  pari)  e  i  caratteri  tra  apostrofi sono considerati quotati.  Questo è il
                      comportamento della modalità posix per la versione 4.1.  Il comportamento  predefinito  di
                      bash rimane come nelle precedenti versioni.
              direxpand
                      Se  impostata,  bash  sostituisce  i  nomi di directory con i risultati dell'espansione di
                      parola mentre effettua il completamento del nome di file.  Questo cambia i  contenuti  del
                      buffer  di  modifica di readline.  Se non è impostata, bash tenta di conservare ciò che ha
                      scritto l'utente.
              dirspell
                      Se impostata, bash tenta la correzione dell'ortografia sui nomi di  directory  durante  il
                      completamento di parola se il nome di directory fornito inizialmente non esiste.
              dotglob Se  impostata,  bash  include  i  nomi  di  file  che  iniziano  con  un `.' nel risultato
                      dell'espansione del percorso.
              execfail
                      Se impostata, una shell non interattiva non esce se non può eseguire il  file  specificato
                      come argomento al comando incorporato exec.  Una shell interattiva non esce se exec non ha
                      successo.
              expand_aliases
                      Se impostata, gli alias vengono espansi  come  descritto  in  precedenza,  sotto  ALIASES.
                      Questa opzione è abilitata in modo predefinito per le shell interattive.
              extdebug
                      Se impostata, il comportamento previsto per poter usare dei debugger è abilitato:
                      1.     L'opzione  -F al comando incorporato declare mostra il nome di file di origine e il
                             numero di riga corrispondente a ogni nome di funzione fornita come argomento.
                      2.     Se il comando eseguito nella gestione del segnale DEBUG ritorna un  valore  diverso
                             da zero, il comando successivo viene saltato e non è eseguito.
                      3.     Se  il  comando eseguito nella gestione del segnale DEBUG ritorna il valore 2, e la
                             shell è in esecuzione in una subroutine (una funzione di  shell  o  uno  script  di
                             shell  eseguito dai comandi incorporati  . o source), viene simulata una chiamata a
                             return.
                      4.     BASH_ARGC e BASH_ARGV sono aggiornati come descritto nelle loro  descrizioni  viste
                             sopra.
                      5.     Il  tracciamento  delle  funzioni è abilitato: sostituzione di comando, funzioni di
                             shell, e subshell invocate con ( comando ) ereditano le intercettazione di  segnale
                             DEBUG e RETURN.
                      6.     Il  tracciamento  degli  errori  è  abilitato: sostituzione di comando, funzioni di
                             shell, e subshell invocate con ( comando ) ereditano le intercettazione di  segnale
                             ERR.
              extglob Se  impostata,  le  caratteristiche  di  corrispondenza  estesa  di  modelli  descritte in
                      precedenza, sotto Espansione di percorso, sono abilitate.
              extquote
                      Se impostato,  la  quotatura  $'stringa'  e  $"stringa"  è  effettuata  all'interno  delle
                      espansioni  di  ${parametro}  racchiuse tra virgolette.  Quest'opzione è abilitata in modo
                      predefinito.
              failglob
                      Se impostata, i modelli che non generano nomi validi  di  file  durante  l'espansione  del
                      percorso danno come risultato un errore di espansione.
              force_fignore
                      Se  impostata,  i suffissi specificati dalla variabile di shell FIGNORE fanno si che delle
                      parole vengano ignorate quando viene effettuato il completamento delle parole anche se  le
                      parole  ignorate sono i soli possibili completamenti.  Si veda VARIABILI DELLA SHELL sopra
                      per una descrizione di FIGNORE.  Quest'opzione è abilitata in modo predefinito.
              globstar
                      Se impostata, il modello ** usato in un contesto di espansione del nome di percorso  trova
                      tutti  i file e zero o più directory e sottodirectory che soddisfano i criteri di ricerca.
                      Se il modello è seguito da una /, trova solo le directory e sottodirectory che  soddisfano
                      i criteri di ricerca.
              gnu_errfmt
                      Se  impostata,  i  messaggi di errore della shell vengono scritti nel formato GNU standard
                      dei messaggi di errore.
              histappend
                      Se impostata, l'elenco della cronologia  è  accodato  al  file  indicato  dalla  variabile
                      HISTFILE all'uscita della shell, invece che sostituire il file preesistente.
              histreedit
                      Se  impostata,  e  readline è in uso, viene data l'opportunità a un utente di ripetere una
                      sostituzione della cronologia che non ha avuto successo.
              histverify
                      Se impostata, e readline è in uso, i risultati della  sostituzione  della  cronologia  non
                      sono  immediatamente  passati  all'analizzatore  della  shell.  Invece, la riga risultante
                      viene caricata nel buffer di modifica readline, permettendo ulteriori modifiche.
              hostcomplete
                      Se impostata, e readline è in uso, bash tenta di effettuare il completamento del  nome  di
                      host  quando una parola contenente un @ è in corso di completamento (si veda Completamento
                      in precedenza, sotto READLINE.  Questa è abilitata in modo predefinito.
              huponexit
                      Se impostata, bash  invia  SIGHUP  a  tutti  i  job  all'uscita  di  una  shell  di  login
                      interattiva.
              interactive_comments
                      Se  impostata,  fa  sì  che, se una parola inizia con #, quella parola e tutti i caratteri
                      rimanenti su quella riga siano ignorati in una shell interattiva (si veda COMMENTI sopra).
                      Quest'opzione è abilitata in modo predefinito.
              lastpipe
                      Se impostata, e job control non è attivo, la shell esegue l'ultimo comando di una pipeline
                      non eseguita in background nell'ambiente di shell corrente.
              lithist Se impostata, e l'opzione cmdhist è abilitata, i  comandi  multiriga  sono  salvati  nella
                      cronologia  includendo i newline, piuttosto che usando come separatori il punto e virgola,
                      dove possibile.
              login_shell
                      La shell imposta quest'opzione se viene avviata come shell di login (si  veda  INVOCAZIONE
                      sopra).  Il valore non può essere cambiato.
              mailwarn
                      Se  impostata,  e  un  file  sul quale bash sta ricercando della posta ha avuto un accesso
                      dall'ultima volta che è stato controllato, viene visualizzato il messagio  ``The  mail  in
                      mailfile has been read''.
              no_empty_cmd_completion
                      Se  impostata,  e  readline  è  in  uso,  bash  non tenta di cercare il PATH per possibili
                      completamenti quando viene tentato il completamento di una riga vuota.
              nocaseglob
                      Se impostata, bash individua i nomi di file senza distinguere le maiuscole dalle minuscole
                      quando effettua l'espansione del percorso (si veda Espansione del percorso sopra).
              nocasematch
                      Se impostata, bash confronta modelli senza distinguere le maiuscole dalle minuscole quando
                      ricerca corrispondenze durante l'esecuzione dei comandi condizionali case o [[.
              nullglob
                      Se impostata, bash permette ai modelli che non individuano nessun file (si veda Espansione
                      del  percorso  sopra)  di  espandere  come  una  stringa nulla, piuttosto che essere presi
                      letteralmente.
              progcomp
                      Se  impostata,  i  servizi  di  completamento   programmabile   (si   veda   Completamento
                      programmabile sopra) vengono abilitati.  Quest'opzione è abilitata in modo predefinito.
              promptvars
                      Se  impostata,  le  stringhe  di prompt subiscono espansione di parametro, sostituzione di
                      comando, espansione aritmetica e rimozione dei segni di  quotatura  dopo  che  sono  stati
                      espansi  come  descritto  in  STRINGHE DI PROMPT sopra.  Quest'opzione è abilitata in modo
                      predefinito.
              restricted_shell
                      La shell imposta quest'opzione se è stata avviata in modalità  ristretta  (si  veda  SHELL
                      RISTRETTA  più  avanti).  Il valore non può essere cambiato.  Questo non viene reimpostato
                      quando i file di avvio vengono eseguiti, permettendo ai file di avvio di accertare se  una
                      shell è ristretta o meno.
              shift_verbose
                      Se  impostata, il comando incorporato shift stampa un messaggio di errore quando il numero
                      di comandi shift effettuati eccede il numero dei parametri posizionali.
              sourcepath
                      Se impostata, il comando incorporato source (.) usa il  valore  di  PATH  per  trovare  la
                      directory  contenente  il  file fornito come argomento.  Quest'opzione è abilitata in modo
                      predefinito.
              xpg_echo
                      Se impostata, il comando incorporato echo espande sequenze di protezione tramite la  barra
                      inversa in modo predefinito.

       suspend [-f]
              Sospende  l'esecuzione  di  questa  shell  fino a che non riceve un segnale SIGCONT.  Una shell di
              login non può essere sospesa; l'opzione -f può essere usata  per  non  tener  conto  di  questo  e
              forzare la sospensione.  Lo stato di ritorno è 0 tranne quando la shell è una shell di login e non
              è fornito -f, o se il job-control non è abilitato.

       test expr
       [ expr ]
              Ritorna uno  stato  di  0   o  1  a  seconda  del  risultato  della  valutazione  dell'espressione
              condizionale  expr.   Ogni operatore e operando deve essere un argomento separato.  Le espressioni
              sono composte dagli elementi descritti in precedenza, sotto ESPRESSIONI  CONDIZIONALI.   test  non
              accetta opzioni, né accetta, ignorandolo, un argomento -- come indicatore di fine delle opzioni.

              Le  espressioni  possono  essere  combinate  usando  i  seguenti  operatori,  elencati  in  ordine
              decrescente di precedenza.  La valutazione dipende dal numero di argomenti; si  veda  più  avanti.
              La precedenza degli operatori è usata quando ci sono cinque o più argomenti.
              ! expr Vero se expr è falso.
              ( expr )
                     Ritorna  il  valore  di expr.  Questo può essere usato per modificare la normale precedenza
                     degli operatori.
              expr1 -a expr2
                     Vero se sia expr1 che expr2 sono vere.
              expr1 -o expr2
                     Vero se o expr1 o expr2 è vera.

              test e [ valutano espressioni condizionali usando  una  serie  di  regole  basate  sul  numero  di
              argomenti.

              0 argomenti
                     L'espressione è falsa.
              1 argomento
                     L'espressione è vera se e solo se l'argomento non è nullo.
              2 argomenti
                     Se  il primo argomento è !, l'espressione è vera se e solo se il secondo argomento è nullo.
                     Se il primo argomento è uno degli operatori  condizionali  elencati  in  precedenza,  sotto
                     ESPRESSIONI  CONDIZIONALI,  l'espressione  è  vera  se  il test unario è vero.  Se il primo
                     argomento non è un operatore condizionale unario valido, l'espressione è falsa.
              3 argomenti
                     Le seguenti condizioni sono applicate nell'ordine elencato.  Se il secondo argomento è  uno
                     degli operatori binari condizionali elencati in precedenza, sotto ESPRESSIONI CONDIZIONALI,
                     il risultato dell'espressione è il risultato del test binario che usa gli argomenti primo e
                     terzo  come  operandi.   Quando  ci  sono tre argomenti, -a e -o sono considerati operatori
                     binari.  Se il primo argomento è !, il valore è la negazione del  test  con  due  argomenti
                     costituito  dagli  argomenti  secondo  e terzo.  Se il primo argomento è esattamente ( e il
                     terzo argomento è esattamente ), il risultato è il  test,  con  1  argomento,  del  secondo
                     argomento.  Altrimenti, l'espressione è falsa.
              4 argomenti
                     Se  il  primo  argomento  è  !,  il  risultato è la negazione dell'espressione composta dai
                     rimanenti  argomenti.   Altrimenti,  l'espressione  è  analizzata  e  valutata  secondo  le
                     precedenze usando le regole elencate sopra.
              5 o più argomenti
                     L'espressione  è  analizzata  e  valutata  secondo  le precedenze usando le regole elencate
                     sopra.

              Quando sono usati con test o [, gli operatori < e > vengono ordinati  lessicograficamente  secondo
              l'ordinamento ASCII.

       times  Stampa  i  tempi  spesi  come  utente  e come sistema per la shell e per i processi eseguiti dalla
              shell.  Lo stato di ritorno è 0.

       trap [-lp] [[arg] sigspec ...]
              Il comando arg dev'essere letto e eseguito quando la shell riceve il segnale(i) sigspec.  Se arg è
              assente  (e  c'è  un  singolo  sigspec)  o  -,  ogni  segnale  specificato  è  riportato  alla sua
              configurazione originale (il valore che aveva al momento dell'ingresso nella shell).  Se arg è  la
              stringa nulla il segnale specificato da ogni sigspec è ignorato dalla shell e dai comandi che essa
              invoca.  Se arg non è presente e -p è stato  fornito,  allora  i  comandi  di  intercettazione  di
              segnale  associati a ogni sigspec vengono visualizzati.  Se non viene fornito alcun argomento o se
              è dato solo -p, trap stampa la lista dei comandi associati a ogni segnale.  L'opzione -l fa sì che
              la  shell  stampi una lista di nomi di segnale e i numeri a loro corrispondenti.  Ogni sigspec è o
              un nome di segnale definito in <signal.h>, o un numero di segnale.   I  nomi  di  segnale  possono
              essere scritti sia in minuscolo che in maiuscolo e il prefisso SIG è opzionale.

              Se un sigspec è EXIT (0) il comando arg è eseguito all'uscita della shell.  Se un sigspec è DEBUG,
              il comando arg viene eseguito prima di ogni comando semplice, comando for, comando  case,  comando
              select, ogni comando for aritmetico, e prima di eseguire il primo comando in una funzione di shell
              (si veda GRAMMATICA DELLA SHELL sopra).  Fare riferimento alla descrizione  dell'opzione  extdebug
              del  comando  incorporato shopt per dettagli sul suo effetto nella gestione del segnale DEBUG.  Se
              un sigspec è RETURN, il comando arg viene eseguito ogni volta che una  funzione  di  shell  o  uno
              script eseguito coi comandi incorporati . o source completa l'esecuzione.

              Se un sigspec è ERR, il comando arg viene eseguito ogni volta che un comando semplice ha uno stato
              di uscita diverso da 0, tenuto conto delle seguenti condizioni.  La gestione del segnale  ERR  non
              viene  invocata se il comando in errore fa parte della lista di comandi immediatamente seguente la
              parola chiave while o until, se fa parte del test in un'istruzione if, se fa parte di  un  comando
              eseguito  in una lista && o || o se il valore di ritorno del comando in esecuzione viene negato da
              un !.  Queste sono le stesse condizioni imposte all'opzione errexit.

              I segnali ignorati al  momento  dell'ingresso  della  shell  non  possono  essere  intercettati  o
              resettati.   I  segnali  intercettati  non ignorati sono riportati al loro valore originale in una
              subshell o in un ambiente di subshell quando ne è stato creato uno.  Lo stato di ritorno  è  falso
              se un sigspec non è valido; altrimenti trap ritorna 0 (vero).

       type [-aftpP] nome [nome ...]
              Senza  opzioni,  indica  come  dovrà  essere  interpretato  ciascun  nome se usato come un nome di
              comando.  Se è usata l'opzione -t, type stampa una stringa che è una fra alias, keyword, function,
              builtin,  o  file  se  nome  è,  rispettivamente,  un alias, una parola riservata della shell, una
              funzione, un comando incorporato, o un file su disco.   Se  il  nome  non  è  trovato,  non  viene
              stampato  nulla,  ed  è  ritornato uno stato d'uscita di falso.  Se viene usata l'opzione -p, type
              ritorna o il nome del file su disco che dovrebbe essere eseguito se nome  fosse  specificato  come
              nome di comando, o nulla se ``type -t nome'' non avesse ritornato file.  L'opzione -P forza PATH a
              ricercare ogni nome, anche se ``type -t nome'' non dovesse ritornare file.  Se un comando è  nella
              tabella  hash,  -p  e  -P  stampano  il valore nella tabella hash, non necessariamente il file che
              appare per primo in PATH.  Se viene usata  l'opzione  -a,  type  stampa  tutti  le  posizioni  che
              corrispondono  a  un  eseguibile chiamato nome.  Questo include alias e funzioni, se e solo se non
              viene usata anche l'opzione -p.  La tabella hash dei comandi non è consultata quando  si  usa  -a.
              L'opzione  -f  sopprime  la ricerca della funzione di shell, come col comando incorporato command.
              type ritorna 0 [vero] se tutti argomenti vengono trovati, falso se non ne viene trovato alcuno.

       ulimit [-HSTabcdefilmnpqrstuvx [limite]]
              Fornisce controllo sulle risorse disponibili per la shell e per i processi avviati  da  essa,  sui
              sistemi  che  consentono un tale controllo.  Le opzioni -H e -S specificano che viene impostato il
              limite hard o limite soft per la data risorsa.  Un limite hard non  può  essere  aumentato  da  un
              utente  comune  una volta impostato; un limite soft può essere aumentato fino al valore del limite
              hard.  Se né -H-S sono specificati, vengono impostati entrambi i  limiti,  hard  e  soft.   Il
              valore  di  limite  può  essere  un numero nell'unità specificata per la risorsa, o uno dei valori
              speciali hard, soft o unlimited.  che stanno rispettivamente per limite hard corrente, limite soft
              corrente  e  nessun limite.  Se limite è omesso, viene stampato il valore corrente del limite soft
              della risorsa, a meno che non venga data l'opzione -H.  Quando è specificata più di  una  risorsa,
              il  nome  del  limite  e  l'unità  vengono  stampati  prima  del  valore.   Le  altre opzioni sono
              interpretate come segue:
              -a     sono riportati tutti i limiti correnti
              -b     La dimensione massima del buffer del socket
              -c     la dimensione massima dei file core creati
              -d     la dimensione massima del segmento dati di un processo
              -e     La priorità massima di schedulazione dei processi ("nice")
              -f     la dimensione massima dei file scritti dalla shell e dai suoi figli
              -i     Il numero massimo di segnali pendenti
              -l     la dimensione massima di memoria che può essere bloccata
              -m     la dimensione massima della memoria occupata (molti sistemi non rispettano questo limite)
              -n     il numero massimo di descrittori di file aperti (la maggior parte dei sistemi non  permette
                     che questo valore sia cambiato)
              -p     la dimensione delle pipe in blocchi da 512 byte (questo non può essere cambiato)
              -q     Il numero massimo di byte nelle code dei messaggi POSIX
              -r     La priorità massima di schedulazione dei processi in tempo reale
              -s     la dimensione massima dello stack
              -t     il massimo quantitativo di tempo macchina utilizzabile, in secondi
              -u     il numero massimo di processi disponibili per un singolo utente
              -v     Il  massimo ammontare di memoria virtuale disponibile per la shell e, su alcuni sistemi, ai
                     suoi figli
              -x     Il numero massimo di file lock
              -T     Il numero massimo di thread

              Se limite è dato, esso è il nuovo valore della  risorsa  specificata  (l'opzione  -a  è  solo  per
              visualizzazione).   Se  nessuna opzione è data, allora è assunta -f.  I valori sono in multipli di
              1024 byte, tranne che per -t, che è in secondi, -p, che è in unità di blocchi da 512 byte,  e  -T,
              -b,  -n,  e  -u,  che  sono  numeri  puri.  Lo stato di ritorno è 0 tranne quando viene incontrata
              un'opzione o un argomento non valido, o avvenga un errore mentre si imposta un nuovo limite.

       umask [-p] [-S] [modo]
              La maschera di creazione dei file dell'utente è impostata a modo.  Se modo inizia con una cifra, è
              interpretato come numero ottale; altrimenti è interpretato come una maschera in modalità simbolica
              simile a quelle accettate da chmod(1).  Se modo è omesso, viene stampato il valore corrente  della
              maschera.   L'opzione  -S  fa  sì  che  la  maschera venga stampata in formato simbolico; l'output
              predefinito è un numero ottale.  Se viene fornita l'opzione -p e modo è omesso, l'output è in  una
              forma riutilizzabile come input.  Lo stato di ritorno è 0 se il modo è stato cambiato con successo
              o se nessun argomento modo era stato fornito, e falso altrimenti.

       unalias [-a] [nome ...]
              Rimuove ciascun nome dalla lista degli alias definiti.  Se si specifica -a, sono rimosse tutte  le
              definizioni  di  alias.   Il  valore  di ritorno è 0 (vero) tranne quando un nome fornito non è un
              alias attualmente definito.

       unset [-fv] [nome ...]
              Per ciascun nome, rimuove la corrispondente variabile o funzione.  Se non vengono fornite opzioni,
              o  è  specificata  l'opzione  -v,  ogni nome designa una variabile di shell.  Le variabili in sola
              lettura non possono essere rimosse.  Se viene specificata -f, ogni nome designa  una  funzione  di
              shell,  e la definizione di funzione viene rimossa.  Ogni variabile o funzione rimossa è eliminata
              dall'ambiente passato ai comandi  successivi.   Se  una  qualsiasi  fra  COMP_WORDBREAKS,  RANDOM,
              SECONDS,  LINENO,  HISTCMD,  FUNCNAME,  GROUPS  o  DIRSTACK  è  annullata,  perde  la sua speciale
              proprietà, anche se viene successivamente ridefinita.  Lo stato d'uscita è 0 (vero) a meno che  un
              nome non sia in sola lettura.

       wait [n ...]
              Aspetta  ogni  processo specificato e ritorna il suo stato di completamento.  Ciascun n può essere
              un ID di processo o una specificazione di job; se è data una specificazione di job,  si  aspettano
              tutti  i  processi nella pipeline di quel job.  Se n è omesso, si aspettano tutti i processi figli
              correntemente attivi, e lo stato di ritorno è 0.  Se n specifica un processo o job non  esistenti,
              lo  stato  di  ritorno  è  127.   Altrimenti,  lo stato di ritorno è lo stato d'uscita dell'ultimo
              processo o job di cui si è atteso il completamento.

SHELL RISTRETTA

       Se bash è avviata col nome rbash,  o  l'opzione  -r  viene  fornita  all'invocazione,  la  shell  diventa
       ristretta.   Una  shell ristretta è usata per impostare un ambiente più controllato di quello della shell
       standard.  Si comporta identicamente a bash con l'eccezione che quel che segue è o  non  permesso  o  non
       effettuato:

       •      cambiare le directory con cd

       •      impostare o rimuovere i valori di SHELL, PATH, ENV o BASH_ENV

       •      specificare nomi di comando contenenti una /

       •      specificare un nome di file contenente una / come argomento al comando incorporato .

       •      specificare  un  nome  di  file contenente una barra [/] come argomento all'opzione -p del comando
              incorporato hash

       •      importare definizioni di funzione dall'ambiente della shell all'avvio

       •      analizzare il valore di SHELLOPTS dall'ambiente di shell all'avvio

       •      ridirigere l'output usando gli operatori di ridirezione >, >|, <>, >&, &>, e >>

       •      usare il comando incorporato exec per sostituire la shell con un altro comando

       •      aggiungere o eliminare comandi incorporati con le opzioni -f e -d del comando incorporato enable

       •      usare il comando incorporato enable  per  abilitare  comandi  incorporati  della  shell  che  sono
              disabilitati

       •      specificare l'opzione -p al comando incorporato command

       •      disattivare la modalità ristretta con set +r o set +o restricted.

       Queste restrizioni sono imposte dopo aver letto eventuali file di avvio.

       Quando  viene  eseguito un comando che viene riconosciuto come uno script di shell (si veda ESECUZIONE DI
       UN COMANDO sopra), rbash rimuove ogni restrizione nella shell creata dalla shell genitrice  per  eseguire
       lo script.

VEDERE ANCHE

       Bash Reference Manual, Brian Fox and Chet Ramey
       The Gnu Readline Library, Brian Fox and Chet Ramey
       The Gnu History Library, Brian Fox and Chet Ramey
       Portable Operating System Interface (POSIX) Part 2: Shell and Utilities, IEEE
       sh(1), ksh(1), csh(1)
       emacs(1), vi(1)
       readline(3)

FILE

       /bin/bash
              L'eseguibile bash
       /etc/profile
              Il file di inizializzazione generale di sistema, eseguito per le shell di login
       ~/.bash_profile
              Il file di inizializzazione personale, eseguito per le shell di login
       ~/.bashrc
              Il file di inizializzazione individuale per ogni shell interattiva
       ~/.bash_logout
              Il file di pulizia della shell di login individuale, eseguito quando una shell di login termina
       ~/.inputrc
              Il file di inizializzazione individuale per readline

AUTORI

       Brian Fox, Free Software Foundation
       bfox@gnu.org

       Chet Ramey, Case Western Reserve University
       chet.ramey@case.edu

       Traduzione in italiano a cura di
       ILDP - Italian Linux Documentation Project
       http://www.pluto.it/ildp

NOTIFICA DEI "BUG"
       Se  trovate  un  "bug" in bash, dovreste segnalarlo.  Ma prima, dovreste assicurarvi che sia veramente un
       "bug", e che appaia nella versione più recente di  bash.   L'ultima  versione  è  sempre  disponibile  da
       ftp://ftp.gnu.org/pub/gnu/bash/.

       Una  volta determinato che avete individuato realmente un "bug", usate il comando bashbug per inviare una
       notifica del "bug".  Se avete una correzione, siete invitati a  inviare  anche  quella!   Suggerimenti  e
       rapporti su "bug" 'filosofici' possono essere inviati a bug-bash@gnu.org o inviati al newsgroup su Usenet
       gnu.bash.bug.

       TUTTI i rapporti sui "bug" dovranno includere:

       Il numero di versione di bash
       L'hardware e il sistema operativo
       Il compilatore usato per compilare
       Una descrizione del comportamento anomalo
       Un breve script o `ricetta' che produca il "bug"

       bashbug inserisce le prime tre voci automaticamente nel modello che fornisce per compilare  una  notifica
       di "bug".

       Commenti  e  notifiche  su  "bug"  riguardanti  questa  pagina  di  manuale dovranno essere indirizzati a
       chet.ramey@case.edu.

       Segnalare eventuali errori di traduzione a ildp@pluto.it

"BUG"
       È troppo grande e troppo lenta.

       Vi sono alcune sottili differenze tra bash e le versioni tradizionali di sh, soprattutto  per  via  delle
       specifiche POSIX.

       In alcuni casi gli alias possono essere causa di confusione.

       Comandi incorporati della shell e funzioni non sono sospendibili/riavviabili.

       Comandi composti e sequenze di comandi nella forma di `a ; b ; c' non sono trattati in modo completamente
       corretto quando viene richiesta la sospensione di un processo.  Quando  un  processo  viene  sospeso,  la
       shell  esegue  immediatamente  il  comando  che  lo  segue immediatamente.  Basta mettere una sequenza di
       comandi fra parentesi per forzarla in una subshell, che può essere sospesa come se fosse un'unica entità.

       Le variabili di array non possono essere esportate (per il momento).

       Ci può essere solo un coprocesso attivo alla volta.