Fundamental of Linux Shell

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 shell
  • csh—C shell
  • ksh—Korn shell
  • tcsh—enhanced C shell
  • bash—GNU Bourne Again shell
  • zsh—extension to bash, ksh, and tcsh
  • pdksh—extension to ksh

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 (pushd and popd)

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 word Shell to signify the Bash shell only. If we intend to use any other shell, then it will be specifically mentioned by name, such as KORN and other similar shells.

In Linux, filenames in lowercase and uppercase are different; for example, the files Hello and hello are two distinct files. This is unlike Windows, where case does not matter.

As far as possible, avoid using spaces in filenames or directory names such as:

  • Wrong filename—Hello World.txt
  • Correct filename—Hello_World.txt or HelloWorld.txt

This will make certain utilities or commands fail or not work as expected, for example, the make utility.

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.

Related Articles

Calculating and reducing the runtime of a script

In this article, we are going to learn how to calculate and reduce the script’s runtime. A simple time command will help in calculating the execution time.PrerequisitesBesides having a terminal open, make sure you have the necessary scripts present in your...

read more

Lorem ipsum dolor sit amet consectetur

0 Comments

Submit a Comment

Your email address will not be published. Required fields are marked *

nineteen − seventeen =