Bash 5.0 lançado com novos recursos

A lista de discussão confirmou o lançamento do Bash-5.0 recentemente. E é emocionante saber que ele vem preparado com novos recursos e variáveis.

Bem, se você estiver usando o Bash 4.4.XX, você definitivamente vai amar o quinto grande lançamento do Bash.

O quinto lançamento se concentra em novas variáveis ​​de shell e muitas correções de bugs importantes com uma revisão. Ele também introduz alguns novos recursos junto com algumas mudanças incompatíveis entre o bash-4.4 e o bash-5.0.

E quanto aos novos recursos?

A lista de discussão explica o bug corrigido nesta nova versão:

Esta versão corrige vários bugs pendentes no bash-4.4 e apresenta vários novos recursos. As correções de erros mais significativas são uma revisão de como as variáveis ​​nameref resolvem e uma série de possíveis erros de memória fora dos limites descobertos via fuzzing. Há uma série de mudanças na expansão de [email protected] e $ * em vários contextos onde a divisão de palavras não é executada para se adequar a uma interpretação padrão Posix, e mudanças adicionais para resolver casos de canto para conformidade com Posix.

Ele também introduz alguns novos recursos. De acordo com a nota de lançamento, estes são os novos recursos mais notáveis ​​que são várias novas variáveis ​​do shell:

O BASH_ARGV0, EPOCHSECONDS e EPOCHREALTIME. O 'histórico' embutido pode remover os intervalos das entradas do histórico e compreende os argumentos negativos como deslocamentos do final da lista do histórico. Existe uma opção para permitir que variáveis ​​locais herdem o valor de uma variável com o mesmo nome em um escopo anterior. Há uma nova opção de shell que, quando ativada, faz com que o shell tente expandir os subscritos de matriz associativa apenas uma vez (isso é um problema quando eles são usados ​​em expressões aritméticas). A opção de shell 'globasciiranges' agora está ativada por padrão; pode ser desativado por padrão no momento da configuração.

E quanto às mudanças entre o Bash-4.4 e o Bash-5.0?

O log de atualização mencionado sobre as alterações incompatíveis e o histórico de versão de linha de suporte suportado. Aqui está o que disse:

Existem algumas mudanças incompatíveis entre o bash-4.4 e o bash-5.0. As mudanças em como as variáveis ​​nameref são resolvidas significam que alguns usos de namerefs se comportarão de maneira diferente, embora eu tenha tentado minimizar os problemas de compatibilidade. Por padrão, o shell só define BASH_ARGC e BASH_ARGV na inicialização se o modo de depuração estendido estiver ativado; Foi um descuido que foi definido incondicionalmente e causou problemas de desempenho quando os scripts foram passados ​​grande número de argumentos.

O Bash pode ser vinculado a uma biblioteca Readline já instalada em vez da versão privada em lib / readline, se desejado. Somente readline-8.0 e versões posteriores são capazes de fornecer todos os símbolos que o bash-5.0 requer; versões anteriores da biblioteca Readline não funcionarão corretamente.

Eu acredito que algumas das características / variáveis ​​adicionadas são muito úteis. Alguns dos meus favoritos são:

  • Há uma nova opção de shell (desativada por padrão, não documentada) para ativar e desativar o envio de histórico para o syslog no tempo de execução.
  • O shell não define automaticamente BASH_ARGC e BASH_ARGV na inicialização, a menos que esteja no modo de depuração, como a documentação sempre disse, mas os criará dinamicamente se um script fizer referência a eles no nível superior sem ter ativado o modo de depuração.
  • O 'histórico' agora pode excluir intervalos de entradas de histórico usando '-d start-end'.
  • Se um shell não interativo com o controle de tarefa ativado detectar que um trabalho de primeiro plano morreu devido a SIGINT, ele age como se recebesse o SIGINT.
  • BASH_ARGV0: uma nova variável que se expande para $ 0 e define $ 0 na atribuição.

Para verificar a lista completa de alterações e recursos, você deve consultar o post da lista de discussão.

Empacotando

Você pode verificar sua versão atual do Bash, usando este comando:

 bash --version 

É mais provável que você tenha o Bash 4.4 instalado. Se você deseja obter a nova versão, aconselho aguardar sua distribuição para fornecê-la.

Com o Bash-5.0 disponível, o que você acha disso? Você está usando alguma alternativa para o bash? Em caso afirmativo, esta atualização mudaria de ideia?

Deixe-nos saber seus pensamentos nos comentários abaixo.

Recomendado

Não mais Ubuntu! Debian é a nova escolha para a distribuição Linux interna do Google
2019
StationX anuncia novo laptop personalizado para Manjaro Linux
2019
Leitor de desktop do Google Play Música para Linux
2019