Hi Dave! I’m running a 500 MHz Titanium Powerbook with 512MB of memory, Mac OSX 10.3.7. I recently had to do a clean install on my powerbook and my shell is defaulting to the tcsh instead of the bash. First question… Why did it do that? Second question… How do I fix it?
Hi and thanks for your message! I used to have a Titanium Powerbook until it fell off my desk and the hinge shattered. A cool $1200 repair bill made me decide to just upgrade to the Aluminum unit. But that’s not what you’re asking about, is it? 🙂
There are two types of clean install with Mac OS X: there’s the clean install that says “I already have accounts, just install all the OS and application program” (it’s “clean” because you have all your old preferences, etc, removed) and then there’s the really clean install which is “my disk is blank. I need something to fill it up. help.” I surmise that the latter is what you found yourself doing.
Apple might have been fiddling with things in 10.3.7 because starting with Panther, the default shell for a brand new account is supposed to be Bash (much to the unhappiness of the tcsh faithful). Why yours ended up with tcsh again, which was from back on the 10.2.x days, I can’t explain.
The good news is that it’s easy to fix it. You can do this two different ways. If you really want to fix your default login shell, you’ll need to go into the NetInfo Manager program (Applications -> Utilities -> NetInfo Manager). Click on “users” then find your account. In the lower pane is “shell” and it’s doubtless set to “/bin/tcsh”. Click on the value and change it to /bin/bash, then quit NetInfo Manager to have it set in the database.
Note: if all the field values are greyed out, you need to click on the little lock icon on the bottom of the Window to allow you to edit the fields herein. Don’t monkey around with other values while you’re in the program, though, because you can really mess up your system!
If you don’t want to change the NetInfo database entry for your account, an easier alternative is to go into the Terminal application (Applications -> Utilities -> Terminal) then go to Terminal -> Terminal Preferences and select “Execute this command” and make sure it’s the shell you want, as shown here:
Which do I recommend? Neither, particularly. Both work well and both accomplish what you want. Oh, alright, since I sometimes ssh into my Mac from other systems, I’d lean more towards changing the NetInfo database entry so that all shells you get have the right command shell, not just those within the Terminal application. Anyway, this’ll fix your problem, I’m sure.
Nice tip, Mr. Bales. Thank you for the concise answer.
How Do I Change My Default Shell In Mac OS X Panther From tcsh To bash?
Hi, Dave! I’m running a 500 MHz Titanium Powerbook with 512MB of memory, Mac OSX 10.3.7. I recently had to do a clean install on my powerbook and my shell is defaulting to the tcsh instead of the bash. First question… Why did it do that? Second quest…
How do I change my default shell in Mac OS X Panther from tcsh to bash?
Hi Dave! I’m running a 500 MHz Titanium Powerbook with 512MB of memory, Mac OSX 10.3.7. I recently had to do a clean install on my powerbook and my shell is defaulting to the tcsh instead of the bash. First question… Why did it do that? Second quest…
Actually, reading the man page for chsh, I think you’re right and I’m wrong. It looks like chsh works with NetInfo (at least, with a local copy of NetInfo if you’re in a networked environment) so you could indeed just type:
$ chsh -s /bin/bash $LOGNAME
on the command line to change your shell. MUCH easier than messing with NetInfo Manager!
Except the chsh command changes entries in the /etc/passwd file, and that’s not the file that Mac OS X uses for account information management. Really. Here’s my /etc/passwd file from a system that has five user accounts:
nobody:*:-2:-2:Unprivileged User:/nohome:/noshell
root:*:0:0:System Administrator:/var/root:/bin/tcsh
daemon:*:1:1:System Services:/var/root:/noshell
smmsp:*:25:25:Sendmail User:/private/etc/mail:/noshell
www:*:70:70:World Wide Web Server:/Library/WebServer:/noshell
mysql:*:74:74:MySQL Server:/nohome:/noshell
sshd:*:75:75:sshd Privilege separation:/var/empty:/noshell
unknown:*:99:99:Unknown User:/nohome:/noshell
Not a single user account in the list.
Or you could simply run:
$ /usr/bin/chsh -s /bin/bash <– for bash
or
$ /usr/bin/chsh -s /bin/tcsh <– for tcsh
Any valid shell in /etc/shells can be used.
How do I change my default shell in Mac OS X Panther from tcsh to bash?
Hi Dave! I’m running a 500 MHz Titanium Powerbook with 512MB of memory, Mac OSX 10.3.7. I recently had to do a clean install on my powerbook and my shell is defaulting to the tcsh instead of the bash. First question… Why did it do that? Second quest…