Join my Laravel for REST API's course on Udemy 👀

Find out what your default shell is

May 6, 2021  ‐ 2 min read

In order to see what your default terminal shell is, you can best be in the terminal itself. To see your default shell go into the terminal and type:

$ echo $SHELL
/bin/bash

This echo command prints out the value of the $SHELL environment variable. This $SHELL variable holds the login shell of the current user logged in on the system. On linux systems the preferred shell by a user is stored in the file /etc/passwd.

See for example this snippet of my passwd file. As you see the last section of the line is /bin/bash, the login shell for my user.

$ cat /etc/passwd
...
koen:x:1000:1000:,,,:/home/koen:/bin/bash

You may find something odd when it comes to the file path to bash: /bin/bash. When you use the which command to find out where a program is located you may see a different path, in my case: /usr/bin/bash

$ which bash
/usr/bin/bash

This is due to some legacy reasons. In older systems bash was located in /bin. To stay compliant with these older systems /bin is actually a symlink to /usr/bin. To validate this you run the command ls -l /bin and you see in the output /bin -> usr/bin. This arrow indicates that /bin is a symlink to /usr/bin.

$ ls -l /bin
lrwxrwxrwx 1 root root 7 Aug  4  2020 /bin -> usr/bin

Change the default shell

If you prefer to use a different shell than bash you are free to do so. Lets for example change the default shell to zsh. In order to do so you use the command chsh, short of change shell?

Keep in mind that you don't run this command with sudo, since you want to change the shell for your current user not for the root user.

If you have zsh installed you can use it as your default shell with the following command.

$ chsh -s $(which zsh)

In order to have this command take effect you at least need to restart your terminal, and maybe even need to log out first.