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
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?
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.
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
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