9.2. Bash (Bourne-Again Shell)
- Bash-4.0 e versioni più recenti permette ora il passaggio non modificato dei concetti di sostituzione del processo attraverso l'espansione delle parentesi graffe, così ogni espansione dei contenuti deve essere specificata separatamente ed ogni sostituzione del processo dovrà essere inserita separatamente.
- Bash-4.0 e versioni più recenti permettono ora a SIGCHLD di interrompere wait builtin, come specificato da Posix, in modo tale che la SIGCHLD trap non venga sempre invocata una sola volta per ogni figlio in uscita se state usando `wait' per l'attesa di tutti i figli.
- Poichè Bash-4.0 e versioni più recenti seguono le regole di Posix per la ricerca del delimitatore di chiusura di un $() command substitution, esso non si comporta come le precedenti versioni ma sarà in grado di raccogliere un numero maggiore di errori di sintassi e di analisi prima di generare una shell secondaria per analizzare il command substitution.
- Il codice di autocompletamento programmabile utilizza lo stesso set di caratteri delimitatori di readline quando separa la riga del comando in due parole al posto del set di metacaratteri della shell, per questo motivo readline e l'autocompletamento programmabile dovrebbero essere più continui.
- Quando read builtin scade esso tenterà di assegnare qualsiasi input letto alle variabili specificate, causando una impostazione delle variabili su di una stringa vuota se non è presente un input sufficiente. Le versioni precedenti scartavano i caratteri letti.
- Con Bash-4.0 e versioni più recenti, quando uno dei comandi in un pipeline veniva terminato da un SIGINT durante l'esecuzione di un comando dell'elenco, la shell si comportava come se avesse ricevuto il segnale di interruzione.
- Bash-4.0 e le versioni più recenti presenta un modo diverso di gestire l'opzione
set -e
, con questa gestione la shell è in grado di uscire se un pipeline fallisce (e non solo quando l'ultimo comando presente nel pipeline fallito è un comando semplice). Tale comportamento non è specificato da Posix. Sono in atto degli sforzi per aggiornare questa porzione di standard; il comportamento di Bash-4.0 cercherà di raggiungere un consenso al momento della release. - Bash-4.0, e versioni più recenti, corregge un bug relativo alla modalità di Posix il quale causava una ricerca da parte di
. (source)
builtin, della directory corrente tramite l'argomento del filename anche se"."
non era presente in PATH. In questo caso Posix indica che la shell non dovrebbe andare alla ricerca nella variabile PWD. - Bash-4.1 utilizza il locale corrente durante il confronto delle stringhe usando gli operatori con il comando
[[
. Ciò può essere ritornato al comportamento precedente impostando una della opzionicompatNN
shopt.
Oltre ai punti precedentemente elencati, l'aggiunta di apici all'argomento del pattern per l'espressione regolare corrispondente all'operatore =~ potrebbe causare l'arresto del regexp matching. Tale comportamento avviene su tutte le architetture. Nelle versioni di bash precedenti a 3.2, l'effetto dovuto all'uso di apici con l'argomento dell'espressione regolare insieme a =~ del comando [[ non era specificato. L'effetto pratico era che i doppi apici usati con l'argomento del pattern avevano bisogno di backslash per usare gli apici con i caratteri speciali del pattern i quali interferivano con la processazione del backslash eseguita dall'espansione della parola racchiusa in apici doppi inconsistente con il metodo attraverso il quale l'operatore == affrontava i caratteri racchiusi all'interno di apici.