Skip to content
geeksforgeeks
  • Courses
    • DSA to Development
    • Get IBM Certification
    • Newly Launched!
      • Master Django Framework
      • Become AWS Certified
    • For Working Professionals
      • Interview 101: DSA & System Design
      • Data Science Training Program
      • JAVA Backend Development (Live)
      • DevOps Engineering (LIVE)
      • Data Structures & Algorithms in Python
    • For Students
      • Placement Preparation Course
      • Data Science (Live)
      • Data Structure & Algorithm-Self Paced (C++/JAVA)
      • Master Competitive Programming (Live)
      • Full Stack Development with React & Node JS (Live)
    • Full Stack Development
    • Data Science Program
    • All Courses
  • Tutorials
    • Data Structures & Algorithms
    • ML & Data Science
    • Interview Corner
    • Programming Languages
    • Web Development
    • CS Subjects
    • DevOps And Linux
    • School Learning
  • Practice
    • Build your AI Agent
    • GfG 160
    • Problem of the Day
    • Practice Coding Problems
    • GfG SDE Sheet
  • Contests
    • Accenture Hackathon (Ending Soon!)
    • GfG Weekly [Rated Contest]
    • Job-A-Thon Hiring Challenge
    • All Contests and Events
  • Shell Scripting
  • Kali Linux
  • Ubuntu
  • Red Hat
  • CentOS
  • Docker in Linux
  • Kubernetes in Linux
  • Linux interview question
  • Python
  • R
  • Java
  • C
  • C++
  • JavaScript
  • DSA
Open In App
Next Article:
Basic Shell Commands in Linux: Complete List
Next article icon

Different Shells in Linux

Last Updated : 11 Jan, 2025
Comments
Improve
Suggest changes
Like Article
Like
Report

SHELL is a program which provides the interface between the user and an operating system. When the user logs in OS starts a shell for user.

Kernel controls all essential computer operations, and provides the restriction to hardware access, coordinates all executing utilities, and manages Resources between process. Using kernel only user can access utilities provided by operating system. 

Types of Shells in Linux:

The C Shell –

Denoted as csh 
  • Bill Joy created it at the University of California at Berkeley. It incorporated features such as aliases and command history. It includes helpful programming features like built-in arithmetic and C-like expression syntax. In C shell:
Command full-path name is /bin/csh, Non-root user default prompt is hostname %, Root user default prompt is hostname #. 

The Bourne Shell –

Denoted as sh 
  • It was written by Steve Bourne at AT&T Bell Labs. It is the original UNIX shell. It is faster and more preferred. It lacks features for interactive use like the ability to recall previous commands. It also lacks built-in arithmetic and logical expression handling. It is default shell for Solaris OS. For the Bourne shell the:
Command full-path name is /bin/sh and /sbin/sh, Non-root user default prompt is $, Root user default prompt is #. 

The Korn Shell

It is denoted as ksh 
  • It was written by David Korn at AT&T Bell Labs. It is a superset of the Bourne shell. So it supports everything in the Bourne shell.It has interactive features. It includes features like built-in arithmetic and C-like arrays, functions, and string-manipulation facilities. It is faster than C shell. It is compatible with script written for C shell. For the Korn shell the:
Command full-path name is /bin/ksh, Non-root user default prompt is $, Root user default prompt is #. 

GNU Bourne-Again Shell –

Denoted as bash 
  • It is compatible to the Bourne shell. It includes features from Korn and Bourne shell. For the GNU Bourne-Again shell the:
Command full-path name is /bin/bash, Default prompt for a non-root user is bash-g.gg$  (g.ggindicates the shell version number like bash-3.50$), Root user default prompt is bash-g.gg#. 

T Shell – 

Denoted as tsh
  • It was originally developed for the Plan 9 operating system, but has since been ported to other systems, including Linux, FreeBSD, and macOS.
Command full-path name is /bin/tcsh, Default prompt for a non-root user is abhishekaslk(user):~> Root user default prompt is root@abhishekaslk(user):~#.

Z Shell –

Denoted by zsh
  • Z Shell (zsh) was created by Paul Falstad in 1990 while he was a student at Princeton University. Z Shell is an extended version of the Bourne-Again Shell (bash), with additional features and capabilities.
Command full-path name is /bin/zsh, Default prompt for a non-root user is abhishekaslk(user)% Root user default prompt is root@abhishekaslk(user):~#

    How to check which shell I am using?

    To check which shell you are currently using, you can use the following command:

    echo $SHELL

    This command will print the path to the shell executable. Another way is by using the ps command:

    ps -p $$

    This prints information about your shell process.

    What are the features of the Bash shell?

    Bash (Bourne-Again SHell) is one of the most feature-rich shells available. Some of its notable features include:

    • Programmability: Includes advanced scripting capabilities, loops, conditionals, and user-defined functions.
    • Job Control: Bash allows you to control jobs (processes) directly from the command line (pausing, resuming, and backgrounding processes).
    • Command Line Editing: Interactive editing of command entries and command history features.
    • Aliases and Shell Functions: Allows creating short names for commands or command sequences and more complex functions for custom operations.
    • Environment Control: Provides extensive control over the environment that scripts and programs run in.
    • Shell Expansions: Bash supports brace expansion, tilde expansion, parameter and variable expansion, command substitution, and arithmetic expansion.

    How to switch between different shells in Linux?

    To switch to a different shell during a session, simply type the name of the shell. For example, to switch to Zsh:

    zsh

    To change your default shell, use the chsh (change shell) command followed by the path to the new shell. You can find the path with which:

    chsh -s $(which zsh)

    This command will set Zsh as your default shell.

    What are some lesser-known shells in Linux?

    Beyond the commonly used shells, there are several lesser-known shells that provide unique features:

    • mksh (MirBSD Korn Shell): A free implementation of the Korn Shell programming language and a successor to the public domain Korn shell (pdksh).
    • yash (Yet Another SHell): A POSIX-compliant shell focusing on spec compliance and small footprint.
    • oksh (OpenBSD Korn Shell): An OpenBSD-enhanced version of the Korn Shell, emphasizing simplicity, efficiency, and correctness.

    Next Article
    Basic Shell Commands in Linux: Complete List
    author
    him0000
    Improve
    Article Tags :
    • Linux-Unix
    • linux-command
    • Shell

    Similar Reads

    • Introduction to Linux Shell and Shell Scripting
      If we are using any major operating system, we are indirectly interacting with the shell. While running Ubuntu, Linux Mint, or any other Linux distribution, we are interacting with the shell by using the terminal. In this article we will discuss Linux shells and shell scripting so before understandi
      7 min read
    • Introduction to Shell Scripting

      • How to Create a Shell Script in linux
        Shell is an interface of the operating system. It accepts commands from users and interprets them to the operating system. If you want to run a bunch of commands together, you can do so by creating a shell script. Shell scripts are very useful if you need to do a task routinely, like taking a backup
        7 min read

      • Different Shells in Linux
        SHELL is a program which provides the interface between the user and an operating system. When the user logs in OS starts a shell for user. Kernel controls all essential computer operations, and provides the restriction to hardware access, coordinates all executing utilities, and manages Resources b
        5 min read

      Basic Shell Commands in Linux

      • Basic Shell Commands in Linux: Complete List
        Anyone using Linux should become an expert in the essential shell commands, as they form the backbone of working with the Linux terminal. These commands enable you to navigate the system, manage files, handle processes, and configure settings effectively. The Linux shell serves as an interface for u
        5 min read

      • Linux Directory Structure
        Prerequisite: Linux File Hierarchy Structure In Linux/Unix operating system everything is a file even directories are files, files are files, and devices like mouse, keyboard, printer, etc are also files. Here we are going to see the Directory Structure in Linux. Types of files in the Linux system.
        5 min read

      • Input Output Redirection in Linux
        In Linux, whenever an individual runs a command, it can take input, give output, or do both. Redirection helps us redirect these input and output functionalities to the files or folders we want, and we can use special commands or characters to do so. For example, if we run the "date" command, it giv
        4 min read

      Variables and Data Types

      • Shell Scripting - Shell Variables
        A shell variable is a character string in a shell that stores some value. It could be an integer, filename, string, or some shell command itself. Basically, it is a pointer to the actual data stored in memory. We have a few rules that have to be followed while writing variables in the script (which
        6 min read

      • Shell Scripting - Rules for Naming Variable Name
        Variables are quite important in any script or program, so we need to understand what is the convention to name these variables. There are certain rules and standards to keep in mind while giving names to the variables in Shell scripting. In this article, we will discuss and list down all the rules
        4 min read

      • String Manipulation in Shell Scripting
        String Manipulation is defined as performing several operations on a string resulting change in its contents. In Shell Scripting, this can be done in two ways: pure bash string manipulation, and string manipulation via external commands. Basics of pure bash string manipulation: 1. Assigning content
        4 min read

      • Array Basics in Shell Scripting | Set 1
        Consider a situation if we want to store 1000 numbers and perform operations on them. If we use a simple variable concept then we have to create 1000 variables and perform operations on them. But it is difficult to handle a large number of variables. So, it is good to store the same type of values i
        6 min read

      Control Structures

      • Conditional Statements | Shell Script
        Conditional Statements: There are total 5 conditional statements which can be used in bash programming if statement if-else statement if..elif..else..fi statement (Else If ladder) if..then..else..if..then..fi..fi..(Nested if) switch statement Their description with syntax is as follows: if statement
        3 min read

      • Looping Statements | Shell Script
        Looping Statements in Shell Scripting: There are total 3 looping statements that can be used in bash programming  Table of Content `while` statement in Shell Script in Linux`for` statement in Shell Script in Linux`until` statement in Shell Script in LinuxExamples of Looping StatementsTo alter the fl
        10 min read

      • Break and Continue Keywords in Linux with Examples
        Both “break” and “continue” are used to transfer control of the program to another part of the program. It is used within loops to alter the flow of the loop and terminate the loop or skip the current iteration. break The break statement is used to terminate the loop and can be used within a while,
        3 min read

      Functions and Script Organization

      • Shell Scripting - Functions and it's types
        Shell scripting is a powerful tool used to automate tasks in Unix-like operating systems. A shell serves as a command-line interpreter, and shell scripts often perform file manipulation, program execution, and text output. Here, we'll look into functions in shell scripting, exploring their structure
        5 min read

      • How To Pass and Parse Linux Bash Script Arguments and Parameters
        Parsing and Passing of Arguments into bash scripts/ shell scripts is quite similar to the way in which we pass arguments to the functions inside Bash scripts. We'll see the actual process of passing on the arguments to a script and also look at the way to access those arguments inside the script. Pa
        7 min read

      Input And Output

      • Shell Scripting - Standard Input, Output and Error
        Working on Linux applications we have several ways to get information from outside and to put it inside: command line args, environment variables, files. All of these sources are legal and good. But it has a finite size. Another way to establish communication is standard streams: input stream (stdin
        7 min read

      • Shell Script to Perform Operations on a File
        Most of the time, we use shell scripting to interact with the files. Shell scripting offers some operators as well as some commands to check and perform different properties and functionalities associated with the file. For our convenience, we create a file named 'geeks.txt' and another .sh file (or
        5 min read

      Command-Line Arguments and Options

      • Shell Script to Demonstrate Special Parameters With Example
        Here, we are going to see what are the special Parameters of the shell script. Before that first, let's understand what is parameters in the shell. The parameter is the entity that stores the value. The variables are the parameters that are defined by the user to use in that specific shell script. A
        5 min read

      Error Handling and Debugging

      • User Space Debugging Tools in Linux
        In this article, we will discuss debugging tools in Linux. Debugging Tools are those programs that allow us to monitor, control, and correct other program's error while they execute. Some of the debugging tools are as follows:- 'print Statement'Querying (/proc, /sys etc)Tracing (strace/ltrace)Valgri
        3 min read

      • Shell Scripting - System Logging
        Shell scripting is a way of automating tasks and operations on a computer system by writing scripts and programs in a shell or terminal environment. These scripts can run commands, access system resources, and process data. Shell scripts are often used to automate repetitive tasks, such as backups,
        9 min read

      Regular Expressions

      • How to Use Regular Expressions (RegEx) on Linux
        Regexps are acronyms for regular expressions. Regular expressions are special characters or sets of characters that help us to search for data and match the complex pattern. Regexps are most commonly used with the Linux commands:- grep, sed, tr, vi. The following are some basic regular expressions:
        5 min read

    geeksforgeeks-footer-logo
    Corporate & Communications Address:
    A-143, 7th Floor, Sovereign Corporate Tower, Sector- 136, Noida, Uttar Pradesh (201305)
    Registered Address:
    K 061, Tower K, Gulshan Vivante Apartment, Sector 137, Noida, Gautam Buddh Nagar, Uttar Pradesh, 201305
    GFG App on Play Store GFG App on App Store
    Advertise with us
    • Company
    • About Us
    • Legal
    • Privacy Policy
    • In Media
    • Contact Us
    • Advertise with us
    • GFG Corporate Solution
    • Placement Training Program
    • Languages
    • Python
    • Java
    • C++
    • PHP
    • GoLang
    • SQL
    • R Language
    • Android Tutorial
    • Tutorials Archive
    • DSA
    • Data Structures
    • Algorithms
    • DSA for Beginners
    • Basic DSA Problems
    • DSA Roadmap
    • Top 100 DSA Interview Problems
    • DSA Roadmap by Sandeep Jain
    • All Cheat Sheets
    • Data Science & ML
    • Data Science With Python
    • Data Science For Beginner
    • Machine Learning
    • ML Maths
    • Data Visualisation
    • Pandas
    • NumPy
    • NLP
    • Deep Learning
    • Web Technologies
    • HTML
    • CSS
    • JavaScript
    • TypeScript
    • ReactJS
    • NextJS
    • Bootstrap
    • Web Design
    • Python Tutorial
    • Python Programming Examples
    • Python Projects
    • Python Tkinter
    • Python Web Scraping
    • OpenCV Tutorial
    • Python Interview Question
    • Django
    • Computer Science
    • Operating Systems
    • Computer Network
    • Database Management System
    • Software Engineering
    • Digital Logic Design
    • Engineering Maths
    • Software Development
    • Software Testing
    • DevOps
    • Git
    • Linux
    • AWS
    • Docker
    • Kubernetes
    • Azure
    • GCP
    • DevOps Roadmap
    • System Design
    • High Level Design
    • Low Level Design
    • UML Diagrams
    • Interview Guide
    • Design Patterns
    • OOAD
    • System Design Bootcamp
    • Interview Questions
    • Inteview Preparation
    • Competitive Programming
    • Top DS or Algo for CP
    • Company-Wise Recruitment Process
    • Company-Wise Preparation
    • Aptitude Preparation
    • Puzzles
    • School Subjects
    • Mathematics
    • Physics
    • Chemistry
    • Biology
    • Social Science
    • English Grammar
    • Commerce
    • World GK
    • GeeksforGeeks Videos
    • DSA
    • Python
    • Java
    • C++
    • Web Development
    • Data Science
    • CS Subjects
    @GeeksforGeeks, Sanchhaya Education Private Limited, All rights reserved
    We use cookies to ensure you have the best browsing experience on our website. By using our site, you acknowledge that you have read and understood our Cookie Policy & Privacy Policy
    Lightbox
    Improvement
    Suggest Changes
    Help us improve. Share your suggestions to enhance the article. Contribute your expertise and make a difference in the GeeksforGeeks portal.
    geeksforgeeks-suggest-icon
    Create Improvement
    Enhance the article with your expertise. Contribute to the GeeksforGeeks community and help create better learning resources for all.
    geeksforgeeks-improvement-icon
    Suggest Changes
    min 4 words, max Words Limit:1000

    Thank You!

    Your suggestions are valuable to us.

    What kind of Experience do you want to share?

    Interview Experiences
    Admission Experiences
    Career Journeys
    Work Experiences
    Campus Experiences
    Competitive Exam Experiences