up vote 4 down vote favorite
share [g+] share [fb]

What is the correct OSX way of changing a users default shell? When I googled for it I found several references to an application called NetInfo Manager but I couldn't find it on my system. There were also references to a command line version called niutil which I didn't find either.

link|improve this question
possible duplicate of How do I set my shell in Mac OS X? – Daniel Beck Jan 18 at 9:22
feedback

migrated from serverfault.com Jan 18 at 9:00

This question came from our site for system administrators and desktop support professionals.

3 Answers

up vote 10 down vote accepted

for <=10.4 - netinfo manager, /users/whoever/shell

for 10.5=> - SysPrefs, accounts, control-click on user, select advanced options, edit login shell field.

link|improve this answer
Wow, after 8 years of using OS X I didn't know about control clicking in the users prefs: I guess this was added in 10.5 though as you pointed out. +1 – jkp Nov 13 '10 at 16:03
Control-Click is stunnning! – Eonil Feb 24 '11 at 2:01
feedback
sudo chsh shell user

where shell is the one you want for that user.

man chsh

for more examples.

link|improve this answer
1  
+1 for treating OS X like a normal *nix system. – Telemachus Jun 7 '09 at 14:11
feedback

NetInfo has been replaced by Directory Services (dscl) and it can be noted the default shell for Mac OS X since 10.3 has been bash. Prior to that it was tcsh.

If you need to do this from the command line (eg. for pushing via ARD or remotely via SSH) you can run:

sudo dscl localhost -change /Local/Default/Users/USERNAME shell OLD_SHELL NEW_SHELL
#In Use:
sudo dscl localhost -change /Local/Default/Users/chealion shell /bin/bash /bin/zsh

If you're not sure of the current shell you can run:

sudo dscl localhost -read /Local/Default/Users/USERNAME shell

If the user is not a local user the path will simply change and if necessary you would change localhost to the name of your Open Directory Server. (Assuming it runs 10.5).

The info is stored in .plists (xml) in /private/var/db/dslocal/ - you don't want to edit the plist files by hand however.

link|improve this answer
feedback

Your Answer

 
or
required, but never shown

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