How to Change the Default Shell in Debian 12 Bookworm

This article provides a step-by-step guide on changing the default shell in Debian 12 Bookworm.

Linux users often prefer a specific shell environment based on their needs and preferences. Debian 12 Bookworm, like most Linux distributions, ships with Bash as the default shell. However, users may want to switch to other shells like Zsh, Fish, or Ksh for better customization, improved scripting capabilities, or personal preference.

This article provides a step-by-step guide on changing the default shell in Debian 12 Bookworm.

Understanding Shells in Linux

A shell is a command-line interpreter that allows users to interact with the operating system. Commonly used shells in Debian include:

  • Bash (Bourne Again Shell) – The default shell in most Linux distributions.
  • Zsh (Z Shell) – Offers advanced features like better auto-completion and plugins.
  • Fish (Friendly Interactive Shell) – Focuses on user-friendliness with autosuggestions.
  • Ksh (KornShell) – A backward-compatible shell with advanced scripting capabilities.

Checking the Current Default Shell

Before changing the default shell, check which one is currently in use. Open a terminal and run:

echo $SHELL

Alternatively, you can use:

getent passwd $USER | cut -d: -f7

This command will display the current default shell assigned to your user account.

Listing Available Shells

To check which shells are installed on your system, run:

cat /etc/shells

This will list all available shells that can be set as the default.

Example output:

/bin/sh
/bin/bash
/usr/bin/zsh
/usr/bin/fish
/usr/bin/ksh

If your preferred shell is not listed, you must install it first.

Installing a New Shell

If the shell you want to use is not installed, you can install it using apt. Below are the installation commands for some common shells:

  • Zsh

    sudo apt install zsh
    
  • Fish

    sudo apt install fish
    
  • Ksh

    sudo apt install ksh
    

Once installed, verify that the shell is available by checking /etc/shells again.

Changing the Default Shell

To change the default shell for your user, use the chsh (change shell) command:

chsh -s /path/to/shell

For example, if you want to switch to Zsh:

chsh -s /usr/bin/zsh

If prompted, enter your user password. The change will take effect the next time you log in.

Alternative Method: Manually Editing /etc/passwd

If chsh does not work, you can manually edit the /etc/passwd file:

  1. Open the file in a text editor with root privileges:

    sudo nano /etc/passwd
    
  2. Locate the line corresponding to your user:

    username:x:1000:1000:User Name,,,:/home/username:/bin/bash
    
  3. Change /bin/bash to your desired shell (e.g., /usr/bin/zsh).

  4. Save and exit (CTRL+X, then Y and Enter).

  5. Log out and log back in for the change to take effect.

Testing the New Shell

After logging back in, confirm the default shell has changed:

echo $SHELL

You should see your new shell’s path.

Setting the New Shell for Root (Optional)

If you want to change the shell for the root user, use:

sudo chsh -s /path/to/shell root

Alternatively, manually edit /etc/passwd as described earlier.

Restoring the Default Shell

If you ever want to revert to Bash, run:

chsh -s /bin/bash

Or manually edit /etc/passwd and change the shell back to /bin/bash.

Conclusion

Changing the default shell in Debian 12 Bookworm is a straightforward process. By following these steps, you can switch to a shell that better suits your workflow and preferences. Whether you prefer Zsh’s powerful features, Fish’s intuitive design, or Ksh’s scripting capabilities, Debian provides the flexibility to choose the best shell for your needs.