- Discovering What Shell You're Using
- Understanding Shells and Options
- Changing Your Shell with chsh
- Changing Your Shell Temporarily
- Using Completion in the bash Shell
- Viewing Session History in the bash Shell
- Using Completion in the zsh Shell
- Viewing Session History in the zsh Shell
- Using Completion in the ksh Shell
- Viewing Session History in the ksh Shell
- Viewing Session History in the csh Shell
- Changing Your Identity with su
- Fixing Terminal Settings with stty
- Exiting the Shell
Understanding Shells and Options
Depending on the particular Unix system you're using, you may have several shells available to you. Table 3.1 describes a few of the more common ones. Each of these shells has slightly different capabilities and features. Keep in mind that the differences in shells do not affect what you can do in Unix; rather, they affect how easily and flexibly you can interact with the system.
Table 3.1. Common Unix Shells
This shell, which is the original Unix shell (often called the Bourne shell), is fine for scripting but lacks a lot of the flexibility and power for interactive use. For example, it doesn't have features like command completion, email checking, history, or aliasing.
csh and tcsh
This family of shells adds great interactive uses but discards the popular scripting support that sh-related shells offer in favor of a C programming-like syntax. Because of the C syntax, this shell is often just called the C shell. Unless you're a C programmer, these are not likely to be your best choices.
ksh, bash, and zsh
These provide a good blend of scripting and interactive capabilities, but they stem from different sources (bash is most similar to sh, hence the Bourne Again SHell name).
You'll likely have bash, ksh, or tcsh (csh)as your shell, but you can change to one of many other shells fairly easily. As Code Listings 3.3 and 3.4 show, you can start by finding out which shells are available to you. Figure 3.1 shows some shells and how they relate to each other.
Figure 3.1 Shells fit neatly into a few "families" with the exception of a few stragglers. Each shell in a family shares many characteristics with the others in the same family.
To see which shells are available to you:
At the shell prompt, type cat /etc/shells to find out which shells are available to you. Code Listings 3.4 and 3.5 show the results of this command on two different systems.
Code Listing 3.3. A minimal listing of available shells on a Unix system, including the basics but not too much in the way of choices.
[ejr@hobbes]$ more /etc/shells /bin/bash /bin/sh /bin/tcsh /bin/csh [ejr@hobbes]$
Code Listing 3.4. These shells are available through an ISP. Notice the additional, custom shells that this ISP uses, including shells that provide special features such as not allowing logins.
xmission> cat /etc/shells /usr/local/bin/tcsh /bin/csh /usr/bin/csh /bin/ksh /usr/bin/ksh /sbin/sh /usr/bin/sh /usr/local/bin/zsh /usr/local/bin/bash /usr/local/bin/nologin /usr/local/bin/terminated /usr/local/bin/xmmenu.email /usr/local/bin/xmmenu.noshell /usr/lib/uucp/uucico xmission>