Take the 2-minute tour ×
Ask Ubuntu is a question and answer site for Ubuntu users and developers. It's 100% free, no registration required.

I want every new user from now on to have bash as their shell by default.

I know that to change your own shell to bash, you would use the command "chsh -s /bin/bash", but how do I automatically set all future users' shell to bash by default?

share|improve this question

2 Answers 2

up vote 24 down vote accepted

adduser

The adduser defaults file is /etc/adduser.conf. The default shell defined by the DSHELL variable is /bin/bash by default.

useradd

Most likely you don't need this because useradd is a very low-level utility, and it's hardly ever used directly.

If you use useradd, edit the /etc/default/useradd skeleton file (don't forget to make a backup though).

Set the SHELL variable to /bin/bash instead of /bin/sh.

Now every time you use useradd to add a new user bash is automatically their default shell.

Already existing users

If you want to change the shell of already existing users you have to edit the /etc/passwd file (please make sure to back have a backup of it).

Here is a description of the columns

  1. login name
  2. optional encrypted password
  3. numerical user ID
  4. numerical group ID
  5. user name or comment field
  6. user home directory
  7. optional user command interpreter

In that order separated by colons (:) like this.

root:x:0:0:root:/root:/bin/bash

For more information about that file consult the man page man 5 passwd.

share|improve this answer
2  
I think a safer way to change another user's shell would be something like sudo -u $USER chsh -s $SHELL. –  Jack O'Connor Oct 24 '13 at 19:57
    
@JackO'Connor you should post that as an answer as well. –  Octavian Damiean Oct 25 '13 at 8:24
    
Thanks, posted. –  Jack O'Connor Oct 28 '13 at 7:21

As Octavian pointed out, the way to change the defaults depends on the way you're creating the user. I tried creating a new user through my Gnome Settings just now, and it seems to follow /etc/default/useradd, so that might be your best bet. For existing users, the safest way to change someone else's login shell is with usermod:

usermod -s /bin/bash $USERNAME

If you're not root, you'll need to sudo that. An alternative is to sudo into the user you want to modify and just run chsh, like this:

sudo -u $USERNAME chsh -s /bin/bash

It's best to avoid editing /etc/passwd by hand, because a mistake in there could break all sorts of things.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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