
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