Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

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?

share|improve this question
1  
Just tried this to update an existing user in FreeBSD 9.1 and the system prompted me to use the following: chpass -s /usr/local/bin/bash USER –  commbot Feb 26 '13 at 7:18
add comment

1 Answer

up vote 13 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
share|improve this answer
10  
...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
add comment

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.