Guide to Unix/Explanations/Choice of Shell

< Guide to Unix < Explanations

A great variety of shells is available for Unix, including Bourne-compatible shells (sh, bash, ksh, pdksh, ash, dash, etc.), C shell (csh, tcsh), Z shell (zsh), and the Friendly Interactive Shell (fish).

The default shell in many Linux distributions and in recent versions of Mac OS X is Bourne-Again Shell (bash).

Bourne-compatible shells

All Unix shells are similar, but they have different features. If you are beginning, and you are not aware of the differences between shells, then you probably want to start with a Bourne-compatible, POSIX-compatible shell such as bash or ksh.

Bourne-compatible shells:

C shell

BSD introduced the C shell, which sometimes resembles slightly the C programming language. This shell is csh. The shell tcsh is csh with more features. These shells are NOT Bourne-compatible. Many of the features were later added to the Bourne-compatible shells (except old copies of sh). When these features work differently in C shell and Bourne-compatible shells, this guide will describe the Bourne-compatible shells.

If csh or tcsh is your default shell, you might benefit by using bash or ksh to get Bourne-compatibility and POSIX features. Some users still prefer the C shell.

zsh

There are alternative shells such as zsh, the Z shell. The Z shell boasts extra and unusual features that make it the preferred shell of many. (For example, it has a builtin ftp client!) Though the Z shell is almost Bourne-compatible, it differs in enough ways that its default behaivour is not Bourne-compatible, though zsh is capable of masquerading as a Bourne shell when so instructed. It can also emulate ksh.

Temporarily using a different shell

If you do not like the shell that you are using, you might want to use a different shell such as ksh or bash. Shells are normal programs, and can be run easily. The SHELL environment variable will still contain the default shell. The exit command will return you to the first shell.

tcsh> printenv SHELL
/bin/tcsh
tcsh> bash
bash$ printenv SHELL
/bin/tcsh
bash$ exit
exit
tcsh>

Permanently changing the default shell

Find list of shells by looking at /etc/shells (which can be done by executing more /etc/shells). The command passwd -e, on some systems chsh, will prompt for a new shell. To change from bash to tcsh one can simply execute chsh which will query the user to enter the absolute path to a new shell:

$ chsh
Password: 
Changing the login shell for baldur
Enter the new value, or press ENTER for the default
       Login Shell [/bin/bash]: /bin/tcsh

or the user can specify the shell:

$ chsh -s /bin/tcsh
Password: 

The shell must be specified using its absolute path, which may be found using which tcsh.

Links:

Reference

  1. pdksh Version 5.2.9 http://www.cs.mun.ca/~michael/pdksh/NEWS "can compile as sh again (--enable-shell=sh)."
This article is issued from Wikibooks. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.