Last updated:
💻 Geeky Vibes! Check out our partner WrinkledT: Sustainable Style With a POP 💥 🌈 for the Soul (and the Planet!) 🌎💚

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?.

💻 Geeky Vibes! Check out our partner WrinkledT: Sustainable Style With a POP 💥 🌈 for the Soul (and the Planet!) 🌎💚
GET UNIQUE TIPS AND THE LATEST NEWS BY SUBSCRIBING TO MY NEWSLETTER.
AND FOLLOW ME ON