chsh1
Change your login shell
Usage
chsh [-s
shell]
[-l]
[-h]
[-V]
[{username | UID}]
Overview
chsh is used to change your login shell. If a shell is not given on the command line, chsh prompts for one.
chsh supports non-local entries (kerberos, LDAP, etc.) if linked with libuser, otherwise use ypchsh(1), lchsh(1) or any other implementation for non-local entries.
Options
-
-s, --shell shell -
Specify your login shell.
-
-l, --list-shells -
Print the list of shells listed in /etc/shells and exit.
-
-h, --help -
Display help text and exit. (Short option
-his used since version 2.30; older versions used the now-deprecated-u).
-
-V, --version -
Display version and exit. (Short option
-Vis used since version 2.39; older versions used the now-deprecated-v).
Valid shells
chsh will accept the full pathname of any executable file on the system.
The default behavior for non-root users is to accept only shells listed in the /etc/shells file, and issue a warning for root user. It can also be configured at compile-time to only issue a warning for all users.
Exit status
Returns 0 if operation was successful, 1 if operation failed or command syntax was not valid.
Releases
19 releases since Debian 1.1 (Buzz); the text changed 16 times.
--help since Debian 4.0 (Etch);
--list-shells since Arch Linux 2026-11-01;
--shell since Debian 4.0 (Etch);
--version since Arch Linux 2026-11-01;
-V since Arch Linux 2026-11-01;
-h since Debian 4.0 (Etch);
-l since Arch Linux 2026-11-01;
-s since Debian 4.0 (Etch).
--root until Debian 13 (Trixie);
-R until Debian 13 (Trixie);
-u until Debian 1.2 (Rex);
-v until Debian 1.2 (Rex).