Shells
From NetBSD Wiki
The Unix shell is the way Unix generally presents itself. It provides an abstraction over the Unix programming interface. The shell allows you to run programs in a relatively easy way. Usually it is the very first thing you see after logging in.
Why shells?
Some other operating systems have their command interpreter integrated in the OS. Why doesn't Unix? Unix is all about freedom of choice, flexibility and separating mechanism from policy [1]. This means anyone should be able to replace the default shell's interface or behaviour with one they like better, without having to change the OS.
This flexibility honors individual tastes by not imposing the One And Only way to interact with the OS on the user. This is part of the reason why Unix is so popular, it can be customised to look and act like you want it, which is not necessarily how the designer envisioned it. In fact, you can often make it do a lot more than the designer intended! Shells like shells/zsh and shells/tcsh are a testament to that, they are much more featureful than vanilla [csh], which was the default shell in the original BSD Unix all those years ago.
See also
- sh, csh and ksh, the traditional Unix shells that come preinstalled with NetBSD
- Shell globbing
- File descriptors
- shell builtin
