As we said before, logging into the system in console mode puts you into a shell. If your system is configured with a graphical login, logging in brings you to the graphical interface where you can open an xterm (or similar) window in order to get a shell. The shell interprets and executes all your commands. Let's look a bit at different shells before we keep going, because they're going to affect some of the material coming up.
If it seems confusing that Unix offers many different shells, just accept it as an effect of evolution. Believe us, you wouldn't want to be stuck using the very first shell developed for Unix, the Bourne shell. While it was a very powerful user interface for its day (the mid-1970s), it lacked a lot of useful features for interactive use — including the ones shown in this section. So other shells have been developed over time, and you can now choose the one that best suits your way of working.
Some of the shells available on Linux are:
Try the following command to find out what your shell is. It prints out the full pathname where the shell is located. Don't forget to type the dollar sign:
$ echo $SHELL
You are probably running bash, the Bourne Again shell. If you're running something else, this might be a good time to change to bash. It's powerful, POSIX-compliant, well-supported, and very popular on Linux. Use the chsh command to change your shell:
$ chsh Enter password: Type your password here — this is for security's sake Changing the login shell for mdw Enter the new value, or press return for the default Login Shell [/bin/sh]:/bin/bash
Before a user can choose a particular shell as a login shell, that shell must be installed and the system administrator must make it available by entering it in /etc/shells.
There are a couple of ways to conceptualize the differences between shells. One is to distinguish Bourne-compatible shells from csh-compatible shells. This will be of interest to you when you start to program with the shell, also known as writing shell scripts. The Bourne shell and C shell have different programming constructs. Most people now agree that Bourne-compatible shells are better, and there are many Unix utilities that recognize only the Bourne shell.
Another way to categorize shells is to identify those that offer command-line editing (all the newer ones) versus those that do not. sh and csh lack this useful feature.
When you combine the two criteria — being compatible with the Bourne shell and offering command-line editing — your best choice comes down to bash, ksh, or zsh. Try out several shells before you make your choice; it helps to know more than one, in case someday you find yourself on a system that limits your choice of shells.
Copyright © 2003 O'Reilly & Associates. All rights reserved.