Bash 5.0 rilasciato con nuove funzionalità

La mailing list ha confermato il rilascio di Bash-5.0 di recente. Ed è emozionante sapere che viene sfornato con nuove funzionalità e variabili.

Bene, se hai utilizzato Bash 4.4.XX, sicuramente amerai la quinta major release di Bash.

La quinta release si concentra sulle nuove variabili di shell e su molte correzioni di bug importanti con una revisione. Introduce anche un paio di nuove funzionalità insieme ad alcune modifiche incompatibili tra bash-4.4 e bash-5.0.

E le nuove funzionalità?

La mailing list spiega il bug corretto in questa nuova versione:

Questa versione corregge diversi bug in sospeso in bash-4.4 e introduce diverse nuove funzionalità. Le correzioni di bug più significative sono una revisione di come le variabili nameref si risolvono e un numero di potenziali errori di memoria fuori limite scoperti tramite fuzzing. Ci sono un certo numero di modifiche all'espansione di [email protected] e $ * in vari contesti in cui la suddivisione di parole non viene eseguita per conformarsi a un'interpretazione standard di Posix e ulteriori modifiche per risolvere i casi d'angolo per la conformità Posix.

Introduce anche alcune nuove funzionalità. Come da nota di rilascio, queste sono le nuove caratteristiche più importanti sono diverse nuove variabili di shell:

BASH_ARGV0, EPOCHSECONDS e EPOCHREALTIME. La "cronologia" integrata può rimuovere intervalli di voci della cronologia e comprendere gli argomenti negativi come offset dalla fine dell'elenco cronologico. Esiste un'opzione per consentire alle variabili locali di ereditare il valore di una variabile con lo stesso nome in un ambito precedente. C'è una nuova opzione di shell che, se abilitata, fa sì che la shell tenti di espandere gli indici associativi dell'array una sola volta (questo è un problema quando sono usati nelle espressioni aritmetiche). L'opzione di shell 'globasciiranges' è ora abilitata di default; può essere disattivato per impostazione predefinita al momento della configurazione.

E i cambiamenti tra Bash-4.4 e Bash-5.0?

Il registro di aggiornamento ha menzionato le modifiche incompatibili e la cronologia delle versioni readline supportate. Ecco cosa ha detto:

Ci sono alcune modifiche incompatibili tra bash-4.4 e bash-5.0. Le modifiche al modo in cui vengono risolte le variabili del nameref significano che alcuni usi di namerefs si comportano diversamente, sebbene io abbia provato a minimizzare i problemi di compatibilità. Per impostazione predefinita, la shell imposta BASH_ARGC e BASH_ARGV all'avvio solo se la modalità di debug estesa è abilitata; era una svista che veniva impostata incondizionatamente e causava problemi di prestazioni quando gli script venivano passati un numero elevato di argomenti.

Bash può essere collegato a una libreria Readline già installata piuttosto che alla versione privata in lib / readline, se lo si desidera. Solo readline-8.0 e versioni successive sono in grado di fornire tutti i simboli richiesti da bash-5.0; versioni precedenti della libreria Readline non funzioneranno correttamente.

Credo che alcune delle caratteristiche / variabili aggiunte siano molto utili. Alcuni dei miei preferiti sono:

  • C'è una nuova opzione di shell (disabilitata per impostazione predefinita, non documentata) per abilitare e disabilitare l'invio della cronologia a syslog in fase di runtime.
  • La shell non imposta automaticamente BASH_ARGC e BASH_ARGV all'avvio a meno che non sia in modalità di debug, come la documentazione ha sempre detto, ma li creerà dinamicamente se uno script li fa riferimento al livello superiore senza aver abilitato la modalità di debug.
  • La 'cronologia' può ora cancellare intervalli di voci della cronologia usando '-d start-end'.
  • Se una shell non interattiva con controllo job abilitato rileva che un lavoro in foreground è morto a causa di SIGINT, agisce come se avesse ricevuto SIGINT.
  • BASH_ARGV0: una nuova variabile che si espande a $ 0 e imposta $ 0 sull'assegnazione.

Per controllare l'elenco completo delle modifiche e delle funzionalità, è necessario fare riferimento al post dell'elenco di distribuzione.

Avvolgendo

Puoi controllare la tua attuale versione di Bash, usando questo comando:

 bash --version 

È più probabile che Bash 4.4 sia installato. Se vuoi ottenere la nuova versione, ti consiglio di aspettare che la tua distribuzione la fornisca.

Con Bash-5.0 disponibile, cosa ne pensi? Stai usando qualche alternativa a bash? Se sì, questo aggiornamento ti farà cambiare idea?

Fateci sapere i vostri pensieri nei commenti qui sotto.

Raccomandato

CPod: un'app Podcast open source e multipiattaforma
2019
5 libri di Ubuntu gratuiti per principianti
2019
Come risolvere: No Unity, No Launcher, No Dash In Ubuntu Linux
2019