A new version of the GNU project’s Bourne Again SHell (Bash) has been released, approximately three years after the previous version. The latest update, Bash 5.3, introduces several significant new features along with various enhancements and fixes, as detailed in the official release announcement.
One of the key features in this update is a new method of command substitution that allows commands to be executed within the current shell’s execution context. This functionality includes two variants: the standard output can still be captured without forking using the syntax ${ command; }
, while the new variant ${| command; }
executes the command directly in the current shell and stores the result in the REPLY
variable.
Input handling and command completion have also been improved. The addition of a new GLOBSORT
variable enables users to control how pathname-completion results are sorted, with multiple criteria available, such as name or size. Additionally, Bash 5.3 enables the compgen
built-in command to store results in a shell variable instead of outputting them directly. Furthermore, the read built-in command now includes a -E
option that activates Readline completions—allowing tab-completion functionality while inputting data.
Improvements extend to Readline, which Bash uses for command line editing and history. The updated features include case-insensitive searching and commands for executing named readline commands.
Enhancements to script management and error reporting are also part of Bash 5.3, such as improved error messages when regular expressions fail to compile. Users can check the complete list of changes in the full CHANGES file linked in the release notes.
For those interested in downloading the source code, it can be found on the official GNU Bash page. Bash remains Ubuntu’s default shell and is the primary shell used by the Terminal app, known for its reliability alongside more sophisticated shells like Zsh and Fish.
For more information, visit the GNU Bash page.