How To Change Shell in Linux

Change Shell in Linux

Linux, the versatile and powerful open-source operating system, offers users a wide array of customization options. One of the most significant aspects of personalization is the ability to change the default shell. The shell, being the command-line interface that allows users to interact with the system, plays a crucial role in enhancing productivity and streamlining workflows. In this comprehensive guide, we will explore the different methods to change the shell in Linux, providing step-by-step instructions, troubleshooting tips, and additional resources to help you make the switch seamlessly.

Understanding Linux Shells

Overview of Common Shells

Linux systems come with a variety of shells, each with its own unique features and capabilities. Some of the most popular shells include:

  • Bash (Bourne Again Shell): Bash is the default shell in most Linux distributions. It offers a user-friendly interface, command-line editing, job control, and a vast array of built-in commands and scripting features
  • Zsh (Z Shell): Zsh is an extended version of Bash, providing advanced features such as command-line completion, spelling correction, and customizable prompts. It is highly configurable and offers a rich set of plugins and themes
  • Fish (Friendly Interactive Shell): Fish is known for its user-friendliness and intuitive features. It provides autosuggestions, web-based configuration, and syntax highlighting out of the box, making it an excellent choice for beginners and experienced users alike
  • Ksh (KornShell): Ksh is a powerful shell that combines the features of Bash and C shell. It offers advanced scripting capabilities, built-in arithmetic operations, and compatibility with Bash scripts

Why Change Your Shell?

There are several reasons why you might want to change your default shell in Linux:

  1. Enhanced Productivity: Different shells offer unique features and shortcuts that can significantly boost your productivity. For example, Zsh provides advanced tab completion and command history, while Fish offers autosuggestions and syntax highlighting
  2. Customization: Shells like Zsh and Fish allow extensive customization through plugins, themes, and configuration files. You can tailor your shell environment to suit your specific needs and preferences
  3. Scripting Capabilities: If you frequently write shell scripts, you may prefer a shell with advanced scripting features. Ksh and Zsh offer powerful scripting capabilities that can simplify complex tasks

Preparing to Change Your Shell

Before changing your shell, it’s essential to ensure that the desired shell is installed on your Linux system. Here are the steps to check and install a new shell:

Checking the Current Shell

To determine your current shell, open a terminal and run the following command:

echo $SHELL

This will display the path to your current shell, such as /bin/bash or /bin/zsh.

Listing Available Shells

To see the list of installed shells on your system, use the following command:

cat /etc/shells

This command will display the paths to all the available shells.

Installing a New Shell

If the desired shell is not listed in the output of cat /etc/shells, you need to install it using your distribution’s package manager. For example, to install Zsh on Ubuntu or Debian, run:

sudo apt install zsh

On Fedora or CentOS, use:

sudo dnf install zsh

Once the installation is complete, the new shell will be available for use.

Changing Your Shell in Linux

Linux provides several methods to change your default shell. Let’s explore the two most common approaches:

Using the chsh Command

The chsh (change shell) command allows you to change your login shell. Here’s how to use it:

  1. Open a terminal and enter the following command:
chsh -s /path/to/new/shell

Replace /path/to/new/shell with the path to the desired shell, such as /bin/zsh or /bin/fish

  1. You will be prompted to enter your password. Type your password and press Enter.
  2. Log out and log back in for the changes to take effect.

Note: If you encounter an error message like “chsh: /path/to/new/shell is not listed in /etc/shells,” ensure that the shell is installed correctly and its path is listed in the /etc/shells file.

Editing the /etc/passwd File

Another way to change your default shell is by directly editing the /etc/passwd file. However, exercise caution while modifying system files. Here’s how to do it:

  1. Open a terminal and switch to the root user using the sudo command:
sudo -i
  1. Open the /etc/passwd file with a text editor, such as nano or vim:
nano /etc/passwd
  1. Locate the line corresponding to your username. It should look similar to this:

Change the /bin/bash part to the path of your desired shell, such as /bin/zsh or /bin/fish.

  1. Save the changes and exit the text editor.
  2. Log out and log back in for the changes to take effect.

Warning: Be extremely careful when editing the /etc/passwd file. Any mistakes can potentially lock you out of your system

Customizing Your New Shell

Once you have successfully changed your default shell, you can customize it to suit your preferences. Each shell has its own configuration files and customization options. Here are a few resources to help you get started:

  • Bash: Bash configuration is typically stored in the ~/.bashrc file.
  • Zsh: Zsh configuration is stored in the ~/.zshrc file. The Oh My Zsh framework provides an extensive collection of plugins and themes to enhance your Zsh experience.
  • Fish: Fish configuration is stored in the ~/.config/fish/ file. The Awesome Fish repository offers a curated list of plugins, prompts, and resources for Fish

Troubleshooting Common Issues

Changing your default shell is usually a straightforward process, but you may encounter some issues along the way. Here are a few common problems and their solutions:

  1. Shell not found: If you receive an error message stating that the shell is not found, ensure that the shell is installed correctly and its path is listed in the /etc/shells file
  2. Login issues: If you experience login issues after changing your shell, verify that the shell path in the /etc/passwd file is correct. If the problem persists, boot into recovery mode and revert the changes
  3. Missing configuration files: If your new shell doesn’t load your previous configurations, you may need to migrate your settings from your old shell’s configuration files to the new shell’s files


Changing your default shell in Linux opens up a world of possibilities for customization and enhanced productivity. Whether you prefer the user-friendly features of Fish, the advanced scripting capabilities of Ksh, or the extensive customization options of Zsh, Linux provides the flexibility to tailor your shell environment to your needs.

By following the step-by-step instructions outlined in this guide and leveraging the additional resources provided, you can confidently switch to your preferred shell and unlock its full potential. Remember to take the time to explore your new shell’s features, customize it to your liking, and enjoy the improved command-line experience.


r00t is a seasoned Linux system administrator with a wealth of experience in the field. Known for his contributions to, r00t has authored numerous tutorials and guides, helping users navigate the complexities of Linux systems. His expertise spans across various Linux distributions, including Ubuntu, CentOS, and Debian. r00t's work is characterized by his ability to simplify complex concepts, making Linux more accessible to users of all skill levels. His dedication to the Linux community and his commitment to sharing knowledge makes him a respected figure in the field.
Back to top button