Comparison of shells
Initially, the Unix OS used a shell program called the Bourne shell. Then, eventually, many more shell programs were developed for different flavors of Unix. The following is some brief information about different shells:
sh—Bourne shellcsh—C shellksh—Korn shelltcsh—enhanced C shellbash—GNU Bourne Again shellzsh—extension tobash,ksh, andtcshpdksh—extension toksh
A brief comparison of various shells is presented in the following table:
Feature
Bourne
C
TC
Korn
Bash
Aliases
no
yes
yes
yes
yes
Command-line editing
no
no
yes
yes
yes
Advanced pattern matching
no
no
no
yes
yes
Filename completion
no
yes
yes
yes
yes
Directory stacks (pushdandpopd)
no
yes
yes
no
yes
History
no
yes
yes
yes
yes
Functions
yes
no
no
Yes
yes
Key binding
no
no
yes
no
yes
Job control
no
yes
yes
yes
yes
Spelling correction
no
no
yes
no
yes
Prompt formatting
no
no
yes
no
yes
What we see here is that, generally, the syntax of all these shells is 95% similar. We are going to follow Bash shell programming.
Tasks done by the shell
Whenever we type any text in the shell Terminal, it is the responsibility of the shell (/bin/bash) to execute the command properly. The activities done by the shell are as follows:
- Reading text and parsing the entered command
- Evaluating meta-characters, such as wildcards, special characters, or history characters
- Process io-redirection, pipes, and background processing
- Signal handling
- Initializing programs for execution
Working in the shell
Let’s get started by opening the Terminal, and we will familiarize ourselves with the bash shell environment:
Open the Linux Terminal and type in:
$ echo $SHELL/bin/bash
The preceding output in the Terminal says that the current shell is/bin/bash, such as the Bash shell:
$ bash -versionGNU bash, version 4.3.48(1)-release (x86_64-pc-linux-gnu)Copyright (C) 2013 Free Software Foundation, Inc.License GPLv3+: GNU GPL version 3 or later http://gnu.org/licenses/gpl.html
This is free software; you are free to change and redistribute it.There is NO WARRANTY, to the extent permitted by law.
Hereafter, we will use the wordShellto signify the Bash shell only. If we intend to use any other shell, then it will be specifically mentioned by name, such asKORNand other similar shells.
In Linux, filenames in lowercase and uppercase are different; for example, the filesHelloandhelloare two distinct files. This is unlike Windows, where case does not matter.
As far as possible, avoidusingspaces in filenames ordirectorynames such as:
- Wrong filename—
Hello World.txt - Correct filename—
Hello_World.txtorHelloWorld.txt
This will make certain utilities or commands fail or not work as expected, for example, themakeutility.
While typing in filenames or directory names of the existing files or folders, use the tab completion feature of Linux. This will make working with Linux faster.
