Heirloom Bourne Shell 050706
The Heirloom Bourne Shell is a portable variant of the traditional Unix shell.
Here are some key features of "Heirloom Bourne Shell":
· script portability testing. Although the Bourne shell is not POSIX-conforming because the POSIX.2 standard introduced requirements for the shell that were incompatible with existing Bourne shell behavior, it remains the father of all Unix shell scripting languages. Most scripts that run in the Heirloom Bourne Shell will run with any Unix shell that is still in use in the twenty-first century. It is relatively easy to write shell scripts that are both POSIX-conforming and usable with the Bourne shell.
· processing of legacy scripts. Some historical scripts did make use of language features proprietary to the Bourne shell. It can sometimes be a hard task to convert them to the portable shell language, so using a Bourne shell to run them is a convenient alternative.
· general script processing. The Bourne shell does not provide as many features as newer Unix shells, but it is nevertheless a highly usable scripting language. Also the language of the Bourne shell has been stable for nearly twenty years now, and will remain so with this implementation. This makes the Bourne shell a no-surprises scripting language once the programmer has get accustomed to it, which cannot be said of many newer ones.
· interactive use. The Bourne shell provides job control if it is invoked as jsh and runs on a terminal. Of course, it lacks fancy features such as a command history, command line completion, etc. But working with these features tends to distract the user's attention. After a familiarization phase, use of the Bourne shell can lead to a more even-tempered, concentrated working style. Give it a try. Seriously.
What's New in This Release:
· Spell checking for the "cd" command is now optionally available. It can be enabled in the makefile at wish.
· Job control is not re-enabled in interactive subshells within the left sides of pipelines anymore. This previously caused commands like "(cat a; cat b) | cat" to fail with "+ Stopped (tty output)".
· Job control now works on FreeBSD.
· Calls to memcpy() with overlapping source and destination have been replaced by memmove(). (Resulting erroneous behavior had not yet been observed with the original code, though.)
· The directory "/usr/lib/locale" is no longer required to be present to activate locale processing. Errors from calls to setlocale() are no longer reported.
· The "NOTES" section of the manual page now lists some behavior special to the Bourne shell (thanks to Sven Mascheck for maintaining the larger list on the web from which the points for this one were derived).