Dopo quasi tre anni di sviluppo, è stata pubblicata una nuova versione dell'interprete della shell GNU Bash 5.3, utilizzato di default nella maggior parte delle distribuzioni Linux. Allo stesso tempo, è stato rilasciato anche la libreria readline 8.3, utilizzata in bash per gestire l'editing della riga di comando.
Tra i principali miglioramenti si possono notare:
- Sono state implementate nuove forme di sostituzione dei comandi «${ command; }» e «${|command;}», che consentono di intercettare l'output di un comando senza creare un processo secondario separato e senza utilizzare canali anonimi. I risultati dell'esecuzione del comando vengono restituiti come risultato della sostituzione o registrati nella variabile REPLY.
- È stata aggiunta una nuova variabile GLOBSORT, che determina il metodo di ordinamento durante il completamento del percorso del file. Ad esempio, è possibile scegliere un ordinamento per nome (GLOBSORT=name), dimensione (GLOBSORT=size) o data di modifica (GLOBSORT=mtime), e definire anche un ordinamento diretto (dal più piccolo al più grande) o inverso (dal più grande al più piccolo) (ad esempio, con «GLOBSORT=-size» i file più grandi verranno mostrati per primi).
- Nella command built-in «compgen» è stata aggiunta l'opzione «-V varname» per salvare i completamenti generati in una variabile, invece di restituirli sul flusso standard.
- Nella command built-in «read» è stata aggiunta l'opzione «-E», che utilizza la libreria readline con regole di completamento automatico delle costruzioni bash durante l'immissione dei dati.
- Nella command built-in «source» è stata aggiunta l'opzione «-p PATH», che consente di sovrascrivere l'elenco di ricerca nei percorsi dei file (il valore specificato viene utilizzato al posto della variabile $PATH).
- Il codice sorgente è stato aggiornato per l'uso dello standard C23. È stata interrotta la possibilità di compilazione con i compilatori in modalità «K&R C» (stile che corrisponde alla descrizione del linguaggio C nel libro «The C Programming Language» di Kernighan e Ritchie).
- Nella command built-in «umask» è stata garantita la piena compatibilità con le specifiche POSIX.
- È stata aggiunta la command caricabile «kv», che forma un array associativo basato su un insieme di dati nel formato «chiave valore».
- È stata aggiunta la command caricabile «strptime», che converte la rappresentazione testuale di data e ora in tempo epoch (numero di secondi dal 1 gennaio 1970).
- È stata aggiunta la command caricabile «fltexpr», che consente di eseguire operazioni aritmetiche in virgola mobile analogamente al comando let.
- È stata aggiunta la variabile dinamica BASH_MONOSECONDS, che contiene il valore corrente dell'orologio monotono di sistema, che aumenta continuamente, anche quando l'ora viene riportata indietro.
- In modalità POSIX, il confronto delle stringhe nel comando "test", utilizzando gli operatori "", ora tiene conto della locale corrente.
- Nel comando "bind -x" è consentito separare i tasti e il comando chiamato da uno spazio, se la sequenza è racchiusa tra virgolette.
- Nella nuova versione di Readline è stata proposta l'opzione "search-ignore-case" per cercare nella cronologia senza tenere conto del maiuscolo e minuscolo. È stato aggiunto il comando "export-completions" per esportare le opzioni di completamento delle parole per l'elaborazione in altri processi. È stato aggiunto il comando "execute-named-command" per eseguire il comando il cui nome è ottenuto dallo standard input.
Fonte: opennet.ru
