chsh – Used to Change the Shell Used When Logging in to the System

The chsh command is used to change the default login shell for a user on a Linux system. The shell is the interface that allows users to interact with the operating system by typing commands. By default, Linux systems use the bash shell, but other shells such as zsh, ksh, and csh are also available.

Overview

The basic syntax for the chsh command is as follows:

chsh [options] [username]

Where username is the name of the user whose login shell you want to change.

To change a user’s default shell, you must be logged in as that user or have root privileges. Once you have the necessary permissions, follow these steps:

  1. Open a terminal window and log in as the user whose shell you want to change.
  2. Type the chsh command followed by the path to the new shell you want to use. For example, to change the default shell to zsh, you would type:
chsh -s /usr/bin/zsh
  1. Press Enter and enter your password when prompted.

Once you have changed the default shell, you will need to log out and log back in for the changes to take effect.

Examples

To change the default shell for the user ‘john’ to zsh, you would type:

chsh -s /usr/bin/zsh john

To change the default shell for the current user to ksh, you would type:

chsh -s /bin/ksh

Specific Use Cases

  • Changing the default shell to a more user-friendly or powerful shell such as zsh or fish.
  • Changing the default shell to a shell that is required for a specific application or task.

Options

The following table lists the available options for the chsh command:

Option Description
-s, –shell SHELL Specify the new login shell.
-h, –help Display help information.
-R, –root CHROOT_DIR Apply changes in the CHROOT_DIR directory and use the configuration files from the CHROOT_DIR directory.
-l, –list-shells List all available shells.

Troubleshooting Tips

  • If you receive an error message saying that the shell you are trying to use is not a valid login shell, make sure that the path to the shell is correct.
  • If you are unable to change the default shell for a user, make sure that you have the necessary permissions. You must be logged in as the user or have root privileges to make this change.

Notes

  • The chsh command only changes the default login shell for a user. It does not affect any currently running shells.
  • The chsh command can also be used to change the default shell for a user in a chroot environment.