Different Shells in Linux (original) (raw)

Last Updated : 3 Apr, 2026

A shell is a program that acts as an interface between the user and the Linux operating system. It allows users to interact with the system by accepting commands and executing them. When a user logs in, the operating system automatically starts a shell session. The shell works with the kernel, which manages hardware, processes, memory and system resources.

Shell and Kernel Relationship

In Linux, the operating system mainly consists of two core components: the kernel and the shell. Both work together to allow users to interact with the system.

Kernel

The kernel is the core part of the operating system. It is responsible for:

**Note: Users cannot directly communicate with the kernel.

Shell

The shell acts as an interface between the user and the kernel. Its main functions are:

Working Flow

The interaction between the user, shell and kernel follows this sequence:

User > Shell > Kernel > Hardware

  1. The user enters a command.
  2. The shell processes and interprets it.
  3. The kernel executes the request.
  4. The result is returned to the user.

This structure ensures secure and efficient system operation.

Types of Shells in Linux

Linux provides multiple shells, each designed with different features and usage purposes. These shells vary in terms of performance, scripting capability and user interaction. Some shells focus on simplicity and portability, while others emphasize advanced customization and productivity.

Commonly Used Linux Shells

The most widely used shells in Linux systems are:

**Note: This order follows a logical progression based on historical development and feature evolution

Bourne Shell (sh)

The Bourne Shell was developed by Steve Bourne at AT&T Bell Labs. It is the original UNIX shell and forms the foundation for many modern shells. It is designed to be fast, lightweight and suitable for system-level scripting.

**Denoted As:

sh

**Path:

/bin/sh, /sbin/sh

**Non-root Prompt:

$

**Root Prompt:

C Shell (csh)

The C Shell was developed by Bill Joy at the University of California, Berkeley. It introduced several interactive features that were not available in the original Bourne shell. It is known for its C-like syntax and user-friendly command-line behavior.

**Denoted As:

csh

**Path:

/bin/csh

**Non-root Prompt:

hostname %

**Root Prompt:

hostname #

Korn Shell (ksh)

The Korn Shell was developed by David Korn at AT&T Bell Labs. It is a superset of the Bourne shell, meaning it supports all features of sh and adds advanced capabilities. It combines scripting power with strong interactive features.

**Denoted As:

ksh

**Path:

/bin/ksh

**Non-root Prompt:

$

**Root Prompt:

GNU Bourne-Again Shell (bash)

The GNU Bourne-Again Shell (Bash) is the most widely used shell in Linux systems. It is compatible with the Bourne shell and also includes features from the Korn shell. Bash is the default shell in most Linux distributions.

**Denoted As:

bash

**Path:

/bin/bash

**Non-root Prompt:

username@hostname:directory$

**Root Prompt:

username@hostname:directory#

T Shell (tcsh)

The T Shell (tcsh) is an enhanced and backward-compatible version of the C Shell. It was originally developed on BSD Unix systems and later ported to Linux and other platforms. Tcsh improves the usability of C Shell by adding modern interactive features.

**Denoted As:

tcsh

**Path:

/bin/tcsh

**Non-root Prompt:

username:~>

**Root Prompt:

root@hostname:~#

Z Shell (zsh)

The Z Shell (zsh) is an extended and highly customizable shell based on Bash and Korn shell features. It was created by Paul Falstad in 1990 while he was a student at Princeton University. Zsh is popular among advanced users due to its flexibility and rich plugin ecosystem.

**Denoted As:

zsh

**Path:

/bin/zsh

**Non-root Prompt:

username%

**Root Prompt:

root@hostname:~#

Comparison of Common Linux Shells

The major Linux shells differ in terms of origin, usability, scripting power and customization.

1. Based On / Origin

2. Interactive Features

3. Scripting Support

4. Customization Capability

5. Default Usage in Linux

6. Learning Difficulty