chsh - Man Page

change your login shell

Examples (TL;DR)

Synopsis

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

Description

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 -h is used since version 2.30; older versions used the now-deprecated -u).

-V,  --version

Display version and exit. (Short option -V is 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.

Authors

Salvatore Valente

See Also

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

Reporting Bugs

For bug reports, use the issue tracker.

Availability

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

Referenced By

blogc-git-receiver(1), 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).

2025-06-23 util-linux 2.41.1