chsh - Man Page

change your login shell

Examples (TL;DR)


chsh [-s shell] [-l] [-h] [-V] [username]


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.


-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. The short options -h have been used since version 2.30; old versions use deprecated -u.

-V,  --version

Print version and exit. The short options -V have been used since version 2.39; old versions use deprecated -v.

-h, --help

Display help text and exit.

-V, --version

Print version and exit.

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.


Salvatore Valente

See Also

login(1), login.defs(5), passwd(5), shells(5)

Reporting Bugs

For bug reports, use the issue tracker at


The chsh command is part of the util-linux package which can be downloaded from Linux Kernel Archive.

Referenced By

chfn(1), dash(1), groupadd(8), groupdel(8), groupmems(8), groupmod(8), intro(1), passwd(5), shells(5), useradd(8), userdel(8), userhelper(8), usermod(8), yppasswd(1).

2023-06-14 util-linux 2.39.2