The default shell in freebsd is SH and I really can't stand it: autocomplete is very limited, and rehash commands kill me. I feel like a one armed and one legged man...

How can I change the shell globally to zsh or bash - for root and for all current and future users?

link|improve this question

feedback

2 Answers

up vote 12 down vote accepted

For existing users:

chsh USER -s SHELL
chsh root -s /usr/local/bin/bash

For future users:

  • Edit "/etc/pw.conf" defaultshell keywords
  • When use adduser(), choose necessary shell
link|improve this answer
9  
...but be careful about changing the root shell to something from the ports tree (e.g., /usr/local/bin/bash), because if you screw something up during a port upgrade you may find yourself without root access. – larsks Jan 29 '11 at 14:50
s/feature/future/? – Dennis Williamson Jan 29 '11 at 14:58
larsk: zsh can be build statically right..? [at least I saw parameter in "make config"] so as far as I understand, it's a binary with all dependencies build in? so can I put /usr/local/bin/zsh to /bin/zsh ? root user can use old version it's ok.. then it would be safe? – holms Jan 29 '11 at 15:27
6  
Building it statically and copying it into /bin is probably the safest thing you can do. I just leave root's shell set to /bin/sh and then exec bash on those rare occasions when I really need to log in as root (more often I just use sudo from my user account). – larsks Jan 29 '11 at 15:33
feedback

Set zsh as your default shell:

chsh -s /bin/zsh

Start / restart zsh (open a new terminal is easy enough…)

link|improve this answer
And this is different from the other answer how? – Chris S Jul 21 '11 at 2:45
feedback

Your Answer

 
or
required, but never shown

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