What Is a CLI Shell?


First off, I assume the reader has some concept of what a command-line shell is. Probably you've used the DOS shell or a UNIX shell, or maybe you're familiar with the Windows options like cmd or powershell... The purpose of this document isn't to tell you that a shell is something you type commands into, it's rather an attempt to reflect on the reasons why such a tool would be a useful way of interacting with your computer.

A Programmer's Perspective

To a computer programmer, a command shell can be thought of as a particular kind of programming language. And, in fact, people do write various kinds of programs in shell languages, which allows people to automate tasks using the same set of syntax and concepts they use in their interactive sessions. One trend I find slightly disturbing is that UNIX shell languages are no longer considered adequate for writing scripts. Some of this is due to the fact that a shell's toolset consists of the programs installed on a machine - and these programs generally aren't standardized to the extent that a scripting language's API is... And some of this is due to the fact that UNIX shell languages can't easily represent certain concepts.

To a programmer, a shell is a programming language that...

A User's Perspective

First off, I want to clarify this point: Programmers are users, too, and I do not believe in the prevailing "wisdom" that "user" implies "unsophisticated user" or that all interfaces ought to be designed for people who don't really understand or care about computers. I am interested in writing a shell which will appeal mainly to programmers, and people who do understand and care about computers. Another way to say "A User's Perspective" here might be "The Shell as a User Interface"...

The command-line shell is a user interface that...

George Caswell
Last modified: Thu Nov 15 17:02:28 EST 2007