[ubuntu-uk] Shell Access for VPS server

Alan Lord (News) alanslists at gmail.com
Tue Jul 7 09:35:42 BST 2009

On 07/07/09 08:20, William Anderson wrote:
> Alan Lord (News) wrote:
>> On 07/07/09 01:24, Sean Miller wrote:
>>> Not on my Ubuntu machine, my default user is still using bash.
>> I would be surprised if the default shell is bash.
>> /bin/sh is a symlink to /bin/dash as Dave explained.
>> If you look at a user's default shell in /etc/passwd you will see most
>> (if not all) point to bin/sh. (Although interestingly I note that root
>> points to bin/bash).
> nope, /bin/sh may have been changed to point to dash instead of bash,
> but new users are created with their shell set to bash.  Every new
> account I've set up on every ubuntu box i've set up lately gets bash as
> their shell.

That's interesting. I wonder when this changed? Ubuntu was [in]famous 
for it's use of dash a couple of years ago but I just created a new test 
user and it's default shell is indeed bash.

Looking into /etc further however, the picture becomes somewhat cloudier...

/etc/adduser.conf specifies /bin/bash as the default login shell.

/etc/default/useradd specifies /bin/sh

# The SHELL variable specifies the default login shell on your
# system.
# Similar to DHSELL in adduser. However, we use "sh" here because
# useradd is a low level utility and should be as general

And /etc/login.defs (Which is referred to by man useradd for changing 
the default behaviour of useradd) has an interesting option FAKE_SHELL 
which can be used to call /bin/fakeshell first - although this is not 
present on my system.

> You may all be thinking "default shell" means the shell new users are
> set with to what sh points to.

I meant default shell as the one set in /etc/passwd which is what they 
are assigned when they first login.

The "default" shell is also what your shell script will point to if you 
don't start the file with a #!/bin/${SHELL}.

Looking through that again, it's interesting to note that all *system* 
users which require a shell are set to /bin/sh and *real* users (i.e. 
actual people and root) are set to /bin/bash.

Dash *is* actually the "default" shell for Ubuntu.

"In Ubuntu 6.10, the default system shell, /bin/sh, was changed to dash"

The default *login* shell is bash.

Interesting little dig around that.

I also discovered the /etc/alternatives directory which is debian's way 
to manage defaults when there are multiple choices such as with text 
editors etc. man update-alternatives explains more.


More information about the ubuntu-uk mailing list