13

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?

holms
  • 1,464
  • 7
  • 20
  • 37
  • 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 07:18

1 Answers1

34

For existing users, use the chsh command (“change shell”):

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

For future users:

  • Edit "/etc/pw.conf" defaultshell keywords
  • When use adduser(), choose necessary shell
Basil Bourque
  • 801
  • 1
  • 11
  • 22
alvosu
  • 8,357
  • 24
  • 22
  • 16
    ...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
  • 2
    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
  • 8
    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
  • Note this must be run as root (or with `sudo`). – Sopalajo de Arrierez Jan 07 '16 at 01:24