Change Your Default Login Shell with chsh
Make fish, zsh or any installed shell the shell you get on every login and terminal session.
01Command
$ chsh -s /usr/bin/fish02What it does
chsh edits your entry in /etc/passwd, which is what login managers and SSH read to decide which shell to start — unlike setting SHELL in .bashrc, which only affects the current session. The chosen shell must appear in /etc/shells or chsh refuses it for security; use the absolute path, not just the name. Current setting is visible with echo $SHELL, and valid options with cat /etc/shells.
03Risk
04Undo
$ chsh -s /bin/bash05Sources
- chsh(1) — change your login shellEvidence: Man page documents chsh changing the login shell and the -s/--shell option; confirms 'chsh', 'shell' and 'login' appear in the text.
- chsh(1) — Ubuntu man pageEvidence: Man page text includes -s, --shell (specify login shell) and the note that the new shell must be listed in /etc/shells.
Last verified: 2026-09-19 · Category: System & Settings
06Related solutions
systemctl cat reveals a service's unit file plus every drop-in override; systemctl edit creates overrides without touching vendor files.
systemd runs a per-user service manager: units in ~/.config/systemd/user/ can start at login without sudo.