O Bash 5.3 chegou com substituição de comandos aprimorada, novas variáveis ​​e suporte ao C23.

bash Linux

Alguns dias atrás O projeto GNU anunciou o lançamento da nova versão do Bash 5.3, o popular interpretador de comandos que continua sendo a escolha padrão na maioria das distribuições Linux.

Esta nova versão representa o trabalho de quase três anos, que não só implementa melhorias na linguagem e no comportamento do shell, mas também introduz novos recursos que o alinham a padrões modernos como o C23. Ele também acompanha o lançamento da biblioteca Readline 8.3.

O que há de novo no Bash 5.3

Uma das mudanças mais notáveis ​​no Bash 5.3 é o Introdução de novas formas de substituição de comandos: ${command;} e ${|command;}Elas permitem interceptar a saída de um comando sem criar um processo filho ou usar pipelines, reduzindo assim o consumo de recursos e melhorando o desempenho. O resultado pode ser armazenado diretamente na variável REPLY, simplificando tarefas comuns de captura de saída.

Outro novo recurso introduzido no GNU Bash 5.3 é o nova variável GLOBSORT permitir define a ordem de classificação ao expandir caminhos de arquivo. Os usuários podem classificar por nome, tamanho, data de modificação e muito mais, com opções de ordem crescente e decrescente.

Além disso, o Bash 5.3 introduz melhorias em vários comandos integrados. O comando compgen agora pode armazenar conclusões geradas em uma variável (-V varname), enquanto read adiciona a opção -E para usar a biblioteca Readline com as regras de preenchimento automático do Bash. O código-fonte também foi aprimorado, agora com suporte a -p PATH para modificar o caminho de pesquisa.

Da mesma forma, o comando umask foi ajustado para estar em total conformidade com a especificação POSIX, e printf foi melhorado com novas opções para strings multibyte e representação alternativa de caracteres e strings.

Compatibilidade com C23 e adeus ao K&R C

Uma das mudanças estruturais mais importantes é a adoção do padrão C23 no código-fonte do Bash. Como resultado, O suporte para compilação no modo "K&R C" foi removido, uma técnica que remonta aos primórdios da linguagem C.

Por outro lado, o Bash 5.3 introduz vários comandos carregáveis, como:

  • kv: para gerar matrizes associativas a partir de dados em formato chave-valor.
  • tempo de início: converte datas em formato de texto para o horário Unix.
  • fltexpr: permite que você execute operações aritméticas de ponto flutuante, emulando o comportamento de let.

Além disso, A variável dinâmica BASH_MONOSECONDS é adicionada fornece um contador monotônico do tempo do sistema, útil para tarefas onde a estabilidade temporal é crítica.

No modo POSIX, o Bash agora realiza comparações de strings com os operadores < e >. Respeitando as configurações regionais. Também alinha o comportamento de comandos como test, trap, wait e bind, seguindo rigorosamente os requisitos do padrão. Por exemplo, trap -P permite imprimir a ação de trap de cada sinal, e wait -n melhora o gerenciamento de processos encerrados e substituições.

Linha de leitura 8.3

A biblioteca Readline, complementar ao Bash, também recebeu uma atualização importante. Entre seus novos recursos mais notáveis ​​estão:

  • pesquisar-ignorar-maiúsculas: permite pesquisas que não diferenciam maiúsculas de minúsculas no histórico.
  • conclusões de exportação: exporta as possíveis conclusões de uma palavra para processamento externo.
  • execute-named-command: Executa comandos cujo nome é lido da entrada padrão, útil para scripts e personalização.
  • Suporte de macro aprimorado, novas variáveis ​​configuráveis ​​e melhor tratamento das dimensões da tela após uma retomada (SIGCONT).

Instalando e/ou atualizando o Bash no Linux

Para quem tiver interesse em instalar ou atualizar o Bash no Linux, saiba que isso depende da distribuição que você está usando. Abaixo, explicarei como fazer isso nas principais distribuições:

Em distribuições baseadas em Debian (como Ubuntu, Linux Mint)

sudo apt install --only-upgrade bash

Isso atualizará o Bash para a versão mais recente disponível nos repositórios oficiais.

Se você quiser instalá-lo do zero (por exemplo, em um sistema mínimo):

sudo apt install bash

Em distribuições baseadas em Red Hat (como Fedora, CentOS, RHEL)

sudo dnf update bash Para instalar o Bash (se ainda não estiver instalado):
sudo dnf install bash

No Arch Linux e derivados (como Manjaro)

sudo pacman -Syu bash

Isso atualizará o Bash e todo o sistema. Para instalar apenas o Bash:

sudo pacman -S bash