Earlier this week we got a major upgrade to one of the most popular Unix shells in the world: BASH 5.0 (Bourne Again Sgell) was released on January 7, 2019.
Previous major release was bash 4.4, delivered in September 2016.
Unbelievable as it may sound, BASH was released in 1989, which makes it 30 years old!
Changes and Improvements in bash 5.0
As expected over the period of 2+ years, lots of bug fixes were identified and resolved.
Readline is the library used by many projects, including bash, for advanced editing of the command lines. All these cool hotkeys for moving around the command line in bash (jumping words, editing/replacing characters) are provided by readline.
bash 5.0 shipped with readline 8.0 upgrade.
You can now use this variable to confirm the name of the shell itself or the name of the script currently running:
greys@maverick:~ $ echo $BASH_ARGV0 /usr/local/Cellar/bash/5.0.0/bin/bash
Very handy for timestamps, this variable returns the number of seconds since start of the Unix epoch.
Another cool variable, EPOCHREALTIME reports Unix timestamps even more precisely: micro-second granularity is provided in addition to the Unix timestamp:
greys@maverick:~ $ echo $EPOCHREALTIME 1547250886.146766
For example, this simple one-liner can prove than sleeping for 1sec isn’t micro-second precise on my MacBook Pro. Notice how the micro-second part is slightly off every time:
greys@maverick:~ $ while true; do echo $EPOCHSECONDS; echo $EPOCHREALTIME; sleep 1; done 1547250913 1547250913.079728 1547250914 1547250914.097573 1547250915 1547250915.107237 1547250916 1547250916.118661 1547250917 1547250917.130726 ^C