Change Shell To Bash in Linux / Unix

How do I switch from a ksh shell to bash on Linux or Unix system? How to change shells on Unix-like system?

A shell is nothing but a command that provides a text-only user interface (also known as “command line interface”) for Linux, MacOS, and Unix-like operating systems. Bash shell read commands such as ls, date and others typed into a terminal and then run them. That is the primary function of bash shell.
How do I switch from an unknown shell to bash?

ADVERTISEMENTS

How do I fund out the default shell for a user?

Type the following command to find out the default shell for a user named vivek using the grep command and /etc/passwd file:
$ grep vivek /etc/passwd
vivek:x:1005:1005:,,,:/home/vivek:/bin/zsh

OR
$ ps -p $$
PID TTY TIME CMD
14314 pts/9 00:00:00 zsh

OR
$ echo $0
zsh

All of the above output indicates that the shell is zsh for user named vivek in Linux operating system.

How do I see what shells are available on my system?

Type the cat command as follows:
$ cat /etc/shells
Sample outputs:

Fig.01: How to find list of available shells on Linux or Unix or MacOS?

Fig.01: How to find list of available shells on Linux or Unix or MacOS?

How do I switch to a bash or different shell?

Type the name at the command line and then press the enter key. In this example, to change from any shell to the bash, type:
bash

How to change shells on a Linux or Unix-like systems?

You can change your default shell using the chsh (“change shell” ) command as follows. The syntax is:
chsh
chsh -s {shell-name-here}
chsh -s {shell-name-here} {user-name-here}
chsh -s /bin/bash
chsh -s /bin/bash vivek

You can find full path to your shell using the following command:
type -a bash
type -a zsh
type -a ksh

Please note that a normal user may only change the login shell for her own account. The superuser (root) may change the login shell for any account using the following syntax:
$ sudo chsh -s /bin/bash raj

🐧 Get the latest tutorials on SysAdmin, Linux/Unix, Open Source/DevOps topics:
CategoryList of Unix and Linux commands
File Managementcat
FirewallAlpine Awall CentOS 8 OpenSUSE RHEL 8 Ubuntu 16.04 Ubuntu 18.04 Ubuntu 20.04
Network Utilitiesdig host ip nmap
OpenVPNCentOS 7 CentOS 8 Debian 10 Debian 8/9 Ubuntu 18.04 Ubuntu 20.04
Package Managerapk apt
Processes Managementbg chroot cron disown fg jobs killall kill pidof pstree pwdx time
Searchinggrep whereis which
User Informationgroups id lastcomm last lid/libuser-lid logname members users whoami who w
WireGuard VPNAlpine CentOS 8 Debian 10 Firewall Ubuntu 20.04

ADVERTISEMENTS
4 comments… add one
  • Big Daddy Leroy Jan 11, 2017 @ 20:58

    getent passwd $USERNAME will provide user’s shell as well

    • David G Jan 12, 2017 @ 20:21

      First command doesn’t show the result. 2nd, 3rd and yours command provided me the shell information. Also you can change $USERNAME variable with the user name desired.

  • David G Jan 12, 2017 @ 20:16

    I have a Linux system with AD authentication; chsh command does not work for my configuration. Is there any other way to change the default change? Thanks.

    • 🐧 Vivek Gite Jan 12, 2017 @ 21:31

      AD as in active directory? Are you using bash under Windows 10? Give us more info.

Leave a Reply

Your email address will not be published.

Use HTML <pre>...</pre>, <code>...</code> and <kbd>...</kbd> for code samples.