Programmers Ken Thompson and Dennis Ritchie are most often credited with the invention of Unix at Bell Labs in 1969 and the early 1970s. That’s entirely fair, but as with most important technologies, it’s the people who follow the pioneers who often make the difference between a fabulous lab prototype and a technology that really transforms the landscape.


David Korn, builder of tools

Image    David Korn

An AT&T Fellow, Korn came to Bell Labs in 1976, just when Unix was beginning to move into the outside world in a serious way. Korn, an application software developer with a background in aerodynamics, was assigned to two of the “first real Unix projects at Bell Labs,” he says — one to establish a centralized, mainframe-based database for internal systems, and the other to create a way to update electronic communication switches.

Image   Bell Labs logo(1984-1995)

Looking for a better and easier-to-use Unix command language, Korn in the early 1980s wrote what was to become the ubiquitous Korn shell. Borrowing ideas from the original Unix shell written by Ken Thompson, the Bourne shell written by Steve Bourne at Bell Labs and the C shell written by Bill Joy at Berkeley, Korn added his own ideas and turned them into a more general scripting language. The result was a high-level programming language that became the de facto standard for Unix and Unix-like systems.


The original UNIX system shell was a simple program written by Ken Thompson at Bell Laboratories, as the interface to the new UNIX operating system. It allowed the user to invoke single commands, or to connect commands together by having the output of one command pass through a special file called a pipe and become input for the next command. The Thompson shell was designed as a command interpreter, not a programming language.


Unlike most earlier systems, the Thompson shell command language was a user-level program that did not have any special privileges. This meant that new shells could be created by any user, which led to a succession of improved shells. In the mid-1970s, John Mashey at Bell Laboratories extended the Thompson shell by adding commands so that it could be used as a primitive programming language.At the same time, Steve Bourne at Bell Laboratories wrote a version of the shell which included programming language techniques. A rich set of structured flow control primitives was part of the language; the shell processed commands by building a parse tree and then evaluating the tree.


Bell Labs Mechanical Sets

Bourne introduced the “here-document” whereby the contents of a file are inserted directly into the script. One of the often overlooked contributions of the Bourne shell is that it
helped to eliminate the distinction between programs and shell scripts.Earlier versions of the shell read input from standard input, making it impossible to use shell scripts as part of a pipeline.

By the late 1970s, each of these shells had sizable followings within Bell Laboratories. The two shells were not compatible, leading to a division as to which should become the standard shell.

At the time of these so-called “shell wars”, Korn worked on a project at Bell Laboratories that needed a form entry system. They decided to build a form interpreter, rather than writing a separate program for each form. The application was coded as shell scripts.Various addons were added.


Korn created the first version of ksh.In 1982, the UNIX System V shell was converted to K&R C, echo and pwd were made built-in commands, and the ability to define and use
shell functions was added. As more and more software developers at AT&T switched to ksh, it became the de facto standard shell at AT&T. The wider availability of ksh contributed significantly to its success.

Korn wrote Uwin (Unix for Windows), a Posix-based interface for Windows that allows AT&T’s Unix-based code to run on Windows computers. Microsoft wrote Windows NT to allow multiple operating systems to run on a Windows machine as subsystems, but before Korn wrote Uwin, a programmer couldn’t mix Unix and Windows calls in one integrated application.

Like so many things associated with Unix at Bell Labs and AT&T, the open-source Uwin software has propagated far and wide. “Hundreds of thousands of users have downloaded it already,” Korn says.

The Unix pioneer confesses to a certain nostalgia for his early days with the operating system. “An early hallmark of Unix was its simplicity,” Korn says. “Now, much of that is gone. Unix has a lot of things that a lot of people would say they wish weren’t there.”