What is Linux Shell

From Linux Bash Shell Scripting Tutorial Wiki
Jump to navigation Jump to search

← What is Linux KernelHomeUnix philosophy →

What is Linux shell?
What is Linux shell?

Computers understand the language of zeros and ones, known as binary language. In the early days of computing, instructions were provided using binary language, which is difficult for all of us to read and write. Therefore, an operating system has a unique program called the shell. The shell accepts human-readable commands and translates them into something the kernel can read and process.

What Is a Shell?

  • The shell is a user program or it is an environment provided for user interaction.
  • It is a command language interpreter that executes commands read from the standard input device such as keyboard or from a file.
  • The shell gets started when you log in or open a console (terminal).
  • Quick and dirty way to execute utilities.
  • The shell is not part of system kernel, but uses the system kernel to execute programs, create files etc.
  • Several shells are available for Linux including:

Please note that each shell does the same job, but each understands different command syntax and provides different built-in functions. Under MS-DOS, the shell name is COMMAND.COM which is also used for the same purpose, but it is by far not as powerful as our Linux Shells are!

Shell Prompt

There are various ways to get shell access:

  • Terminal - Linux desktop provide a GUI based login system. Once logged in you can gain access to a shell by running X Terminal (XTerm), Gnome Terminal (GTerm), or KDE Terminal (KTerm) application.
  • Connect via secure shell (SSH) - You will get a shell prompt as soon as you log in into remote server or workstation.
  • Use the console - A few Linux system also provides a text-based login system. Generally you get a shell prompt as soon as you log in to the system.

How do I find out my current shell name?

To find all of the available shells in your system, type the following command:

cat /etc/shells
/etc/shells is a text file which contains the full pathnames of valid login shells.
/etc/shells is a text file which contains the full pathnames of valid login shells.

In case the /etc/shells file has more than one shell listed under it, then it means that more than one shell is supported by your platform.

Bourne-compatible shells

  1. bash
  2. ksh
  3. sh
  4. zsh

C-shell-compatible shells

  1. bcsh
  2. csh
  3. tcsh

Command Line Interface (CLI)

The shell provides an interface to Linux where you can type or enter commands using the keyboard. It is known as the command line interface (CLI). To find out your current shell type following command[1].:

echo $SHELL
ps $$
ps -p $$

The following sample output indicate that I am using bash shell:

  PID TTY          TIME CMD
13931 pts/4    00:00:00 bash

Basic Command Line Editing

You can use the following key combinations to edit and recall commands:

  • CTRL + L : Clear the screen.
  • CTRL + W : Delete the word starting at cursor.
  • CTRL + U : Clear the line i.e. Delete all words from command line.
  • Up and Down arrow keys : Recall commands (see command history).
  • Tab : Auto-complete files, directory, command names and much more.
  • CTRL + R : Search through previously used commands (see command history)
  • CTRL + C : Cancel currently running commands.
  • CTRL + T : Swap the last two characters before the cursor.
  • ESC + T : Swap the last two words before the cursor.
  • CTRL + H : Delete the letter starting at cursor.

Executing A Command

Type your command, and press enter key. Try this the date command which will display current date and time:


Sample outputs:

Tue Apr 27 05:20:35 IST 2010

Command And File Completion

The Bash shell will auto complete file and command names, when possible and/or when you tell them to. For example, if you type sle and pressing Tab key will make the shell automatically complete your command name. Another example, if you type ls /e and pressing Tab key will make the shell automatically complete your word to /etc as it sees that /etc/ is a directory which starts with /e.

Getting Help In Linux

man date
  • You can read info documentation as follows for the ls command:
info ls
  • Many commands accepts --help or -h command line option. In this example, display help options for the date command:
date --help
date --help | grep -E -w -- '-(R|r|s)'

Here is what I see from the last command:

  -R, --rfc-email            output date and time in RFC 5322 format.
  -r, --reference=FILE       display the last modification time of FILE
  -s, --set=STRING           set time described by STRING
help set
  • In short use any one of the following option to get more information about Linux commands:
man commandName
info commandName
commandName -h
commandName --help


  1. Command to find out current shell name from the nixCraft FAQ section.

← What is Linux KernelHomeUnix philosophy →