What's New in GNU Bash 5?

Last Updated: 
subscribe to my newsletter

The version 5 of GNU Bash has been released and packed with quite a few improvements and fixes.

  1. You can now skip the use of date '+%s' with the new EPOCHSECONDS variable which expand the time in seconds since the Unix epoch, and EPOCHREALTIME with microsecond granularity. See below examples.
  2. The wait builtin command can now wait for the last process substition and it also includes a -f option to wait for the specified job or process to terminates.
  3. New BASH_ARGV0 variable that expands to $0 and sets $0 on assignment.
  4. New localvar_inherit shopt option for local variables to inherits the value of a variable with the same name at the nearest preceding scope.
  5. Few improvement and fixes in associative arrays including assoc_expand_once shell option, subscripts with white spaces, etc.
  6. globasciiranges is now the default which solve the common mistake of [a-z] vs [A-Z] matching.
  7. Many improvement on the history builtin.
  8. Many regressions/bug fixes since version 4 which address some potential out-of-bounds memory errors, changes in the expansion of $@ and $* to conform to Posix standards.

👉 For the full list of changes, check the official announcement.

⚠️ Most Linux distributions don't seem to come compiled with the new feature, syslog_history shell option, for disabling at runtime whether history is sent to syslog.

Examples: $EPOCHSECONDS and $EPOCHREALTIME

$ date '+%s' # Before Bash version 5
1547092066

$ echo $EPOCHSECONDS
1547092066

$ echo $EPOCHREALTIME
1547092066.749218

👉 To read more on how to manipulate and format dates in bash see the post How To Format Date and Time in Linux, macOS, and Bash?.

Related bash posts that you may like...
How To Create Simple Menu with the Shell Select Loop?
The select loop is not a regular shell loop. It can be used in Bash to generate a simple menu from which a user can select numbered options.
What is the Right Way to Loop in Bash?
Looping over a list of numbers or words is a building block in shell scripts. Learn how to write Bash loops, including for loop, while loop, and until loop.
What is the Best Way to Count Files in a Directory?
Learn how to count the number of files in a directory using the Linux command line ls, find, and a native bash shell solution with globs and arrays.
5 Mistakes To Avoid For Writing High-Quality Bash Comments
Adding comments in your Bash scripts is necessary to ensure maintainability over time. This post covers 5 Bash comments mistakes to avoid in your shell scripts.