When I ssh as root, my shell is bash
, but when it's a non-root user it is sh
. How can I make them both to use bash
?
This actually goes against the logic in this question: Why root's default shell is configured differently with other normal user account's default shell?
4 Answers
Please see man usermod
.
An example would be sudo usermod -s /bin/bash username
.
As far as I know your default shell is defined in /etc/passwd
(as decided at user creation). Change /etc/passwd
on the target machine to reflect your choice.

- 2,495
The command chsh(1)
is used to change a user's shell. The system can be set up to allow only certain shells by listing the allowed shells in /etc/shells
. This does not need root privileges, but a user can only change their shell.
You will need to enter your password (not root) to change your shell, unless you are root, in which case no password is needed and you can set any program to be used as a user's shell (ignoring /etc/shells
).

- 39,069
You can do this either while creating the user with the option useradd -s /bin/bash
, or later with usermod -s /bin/bash
as suggested by can, or by modifying the /etc/passwd
file as suggested by asoundmove. But if you are looking for another solution, then I suggest looking for the file /etc/default/useradd
and modifying it according to your need. If you change the line SHELL=/bin/bash
, it will apply to every new user. Also have a look at /etc/login.defs
file.

- 56,709
- 26
- 150
- 232

- 14,786
- 14
- 66
- 101
sh
. If you use adduser, it will bebash
on Ubuntu. – m33lky Apr 17 '11 at 04:39-s
option to set the shell at user creation time. – Keith Apr 17 '11 at 07:22