The Unix Environment



Last revision September 1, 2011

The Unix operating environment is organized into three layers. The innermost level of Unix is the kernel. This is the actual operating system, a single large program that always resides in memory. Sections of the code in this program are executed on behalf of users to do needed tasks, like access files or terminals. Strictly speaking, the kernel is Unix.

The next level of the Unix environment is composed of programs, commands, and utilities. In Unix, the basic commands like copying or removing files are implemented not as part of the kernel, but as individual programs, no different really from any program you could write. What we think of as the commands and utilities of Unix are simply a set of programs that have become standardized and distributed. There are hundreds of these, plus many additional utilities in the public domain that can be installed. This level also includes standardized system routines, or application programming interfaces (APIs), that programmers can use to create new programs and utilities.

The final level of the Unix environment, which stands like an umbrella over the others, is the shell. The shell processes your terminal input and starts up the programs that you request. It also allows you to manipulate the environment in which those programs will execute in a way that is transparent to the program. The program can be written to handle standard cases, and then made to handle unusual cases simply by manipulating its environment, without needing a special version of the program.

The pages in this Using Unix section are geared towards the syntax and capabilities of the C-shell family of command interpreters, such as csh and tcsh. If you are using the bash shell, which is popular on Linux and Mac OS X, or one of the lesser used shells such as zsh or ksh, then you should always check in your environment to verify that the commands and options I describe here work the same way - or to find the alternatives.

<--Previous Overview Next-->

Comments or Questions?