Where does the Bourne shell live?

The Bourne Shell was introduced 1979 with Version 7. It was the first properly programmable shell. On some commercial Unix flavours (a more recent variant) is the system shell (/bin/sh) until today. Important flavours at the time of this writing are

On almost all other commercial systems the shell is still available at a different path or name.

Until recently the source was licensed in such a way that this shell was not freely available. But meanwhile Sun released their OpenSolaris variant and a port based on it has been made available by the Heirloom project, which is a valuable step from the viewpoint of portable programming and historic interest.

The Bourne shell was never versioned

Thus the different variants are only distinguishable by their features. A certain variant is usually called by the respective AT&T Unix version it was released with. Some examples for important shell variants are: Version7, SVR2, SVR3 and SVR4. Berkeley published its BSD variant of the Version7 shell until they substituted it with the Almquist Shell due to the license wars. Commercial vendors often added some small modifications of their own to an AT&T variant they had licensed. A detailed overview about the various versions is available here: The traditional Bourne Shell family.

The Bourne shell never experienced a complete rewrite

Originally it was quite a good piece of engineering and until today it is a very small and powerful program. Despite the various deficiencies of this language, most important shells are bourne compatible until today. The drawback of the early origin without rewrite is a still complex source (originally written for systems with 64k overall memory) and the lack of various improvements which would have made it much more interesting nowadays.

By far the most important features missing are "command line editing" and a "history". Perhaps both was not added in the hope that this functionality would move into the terminal driver and thus being consistently available to all interactive programs (quite a fascinating idea, isn't it?). When it had turned out that this would not happen, the Bourne shell was only used as scripting language because successors like the KornShell and BashShell were already established.

How to recognize a Bourne shell?

A simple way to identify a Bourne shell is testing for the following feature: The caret (^) has the same meaning like the pipe symbol (|). This was taken over from the predecessor, the Thompson shell, which is the reason why modern shells certainly never implemented it.


CategoryShell CategoryUnix