Author's Note

My younger sister asked me a question a few days ago that has forced me to reexamine my motivations for writing this book.  She asked me, "What is a shell?"  If I remember correctly, I did give her a five-and-dime answer, but I found that as I did so, I could not quite explain the entire concept satisfactorily.  Since she posed this question, I have found the query creeping into my thoughts.  It has challenged me to recall this text's origins, what my original intentions for it were, and what I now believe to be its scope and purpose.  In doing so, I now understand that there is a fairly simple answer to her question, which I will get to in the first chapter, but I have also realized that there is a rich variety to what can be called a shell and a subsequent history of computing to which this book and the shell are linked.

This book derives from a class I produced and taught during my programmer days at ARINC.  At that time, I wanted to share with my colleagues how to customize UNIX rather than fight it.  I was frustrated watching a group of talented C++ programmers fumble around in such a rich operating system.  I figured I'd write a notebook that could explain the simple programming facilities available in the shell, and I would never again have to watch a friend hit the up-arrow key or enter !! just to monitor their program.  So I took a couple weeks in between projects and wrote and presented what can now be considered the outline for this book.  The only problem was that I had peaked my peers' interest in the shell.  Soon I was receiving phone calls and office visits that required a more in depth explanation than what I had written on a few acetate slides.

By this time, two very important trends in computing and networking started.  A couple years earlier, a few smart chaps out at the University of Illinois had developed the idea of hypertext documents, and text is all they were, that would allow users to move through them by selecting words that linked documents across different networks.  By the time I had given my class, the idea had bloomed into HTML and a little known buzz word called the World Wide Web.  Seeing how fun and easy it was to create interlinked documents, with pictures and tables nonetheless, I thought it would be a great idea to try translating the class notes into an active book.  Imagine how useful it would be to a reader to move from chapter to chapter at the click of a button or to follow a link from a concept presented in the book's index immediately to the written text describing it.  Besides that, I figured HTML was a good format for its operating system independence as well as its growing acceptance among the Internet community.

About the same time I started converting the class notes into HTML, the Microsoft juggernaut began gaining steam with a new operating system, Windows95.  The key to this operating system was and still is its eye catching GUI.  It was a big step over Windows 3.1.  Suddenly, Microsoft had produced an easy to use and stable desktop operating system that anyone could use.  Of course I could now discuss the merits of Macintosh and how much Win95 looks and feels like Macintosh, but I digress.  Microsoft marketted the hell out of its new baby, and Windows95 sold like no other program or operating system.

Being both a UNIX and Macintosh biggot, I would not succumb to the marketing hype.  I promised myself.  I would not do it.  Linux or die!  Then I saw that a good friend of mine had installed Win95, and people at work began using it.  The trade magazines carried more and more articles talking about the use of Windows95 in corporate America.  Slowly, it was closing in on me.  I finally fell prey to Windows when a laptop I had ordered came preconfigured with it.  I have to admit that once I used it I was hooked.  Pretty soon, I noticed a majority of users inside and outside my office were using Windows95.

When Microsoft released Windows NT 4, which pretty much has the same interface as Win95, I knew it was over for UNIX.  It would not happen overnight of course, but why bother writing a book that will be obsolete within a few years.  So I shelved the book and actually made a career change that would move me away from daily programming into the design and implementation of data communication networks.  While on this new path, I noticed the monthly toutings by various trade magazines of NT's market penetration.  Charts and graphs that had been speculation of its deployment within a few years had become real.  And why not?  It is much easier for an administrator to point and click through an operating system then to have to learn a cryptic command line interface (CLI) like UNIX.  Of course these same administrators also do not understand the flexibility and efficency of this CLI, but I digress again.  Suffice it to say, NT had made its mark and was here to stay after a few years of introduction into corporate America.

And then one day my sister asked me, "What is a shell?"

I was surprised.  She had been telling me about her new job as a database programmer and how the product ran on a couple variants of UNIX.  She was telling me how she knew some UNIX from her previous job, but now she would really need to understand it, and then the question.

Since our discussion, I decided to take another look at NT and UNIX.  I found reports of NT's shortcomings as a secure and stable platform.  Serious problems with its networking and administrative modules could bring the operating system to an abrupt halt.  Performace evaluations rated it poorly in, for example, its ability to act as a private gateway for remote access.  I even had a couple customers tell me they would not use NT for mission critical applications.  Instead, they were still deploying UNIX based machines.  About all they were using NT for was for basic user accounting, file, and printing services.  Still, I realize this is entirely a natural part of any operating system's life-cycle.  NT will be an enterprise system someday, but as I write this book, it is not there.  Hence, there is still a strong demand for UNIX.

So here I sit, busily typing with a renewed vigor to teach my sister and anyone else who cares to learn how to program the Bourne shell in order to use UNIX to its fullest potential.

Robert Sayle
June 8, 1998