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?


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.

  • 1
    OMG thanks. I used useradd, so that's why it was configured to sh. If you use adduser, it will be bash on Ubuntu. – m33lky Apr 17 '11 at 4:39
  • @fortress You can use the -s option to set the shell at user creation time. – Keith Apr 17 '11 at 7:22

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


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.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.