To check the currently logged in shell
# echo $SHELL
To view all the available shells in your machine
# chsh -l
You can also view the available shell details from the below file
# less /etc/shells
To change the shell temporarily
To do this just provide the full path of the shell you want to use. But this is just a temporary change as next time you switch terminal you will login to the default shell
[root@test2 ~]# /bin/sh
sh-4.1# As you see above my shell prompt changed from /bin/bash to /bin/sh
To change the shell prompt permanently
# chsh -s /bin/sh
Changing shell for root.
[root@test2 ~]# But as you notice even though our shell was changed successfully but still we see bash shell prompt.
NOTE: To make the changes affect you need to log out and log back in
Using username "root".
Last login: Fri Mar 21 10:15:03 2014 from 192.168.1.2
-sh-4.1# echo $SHELL
So now as I try to login I see my default login shell is changed to /bin/sh
Which file is responsible for assigning shell by default?
What if you want next time you create a user, he/she should get different shell and every time you don't change their shell manually
Check the below file
# cat /etc/default/useradd
# useradd defaults file
As you see the SHELL argument has /bin/bash as default. Just change this value to any shell you want to provide for a new user.
How to change user Password Expiry, Home Directory etc in Linux
How to create user without useradd command in Linux
How to give normal user root privileges using sudo in Linux/Unix
1 thought on “How to change default login shell permanently in linux”
Thanks! Very useful post.