The shells file contains a list of the shells on the system. Applications use this file to determine whether a shell is valid. See getusershell(3C) . For each shell a single line should be present, consisting of the shell's path, relative to root.
A hash mark (#) indicates the beginning of a comment; subsequent characters up to the end of the line are not interpreted by the routines which search the file. Blank lines are also ignored.
The following default shells are used by utilities: /bin/bash, /bin/csh, /bin/jsh, /bin/ksh, /bin/ksh93, /bin/pfcsh, /bin/pfksh, /bin/pfsh, /bin/sh, /bin/tcsh, /bin/zsh, /sbin/jsh, /sbin/sh, /usr/bin/bash, /usr/bin/csh, /usr/bin/jsh, /usr/bin/ksh, /usr/bin/ksh93, /usr/bin/pfcsh, /usr/bin/pfksh, /usr/bin/pfsh, and /usr/bin/sh, /usr/bin/tcsh, /usr/bin/zsh, and /usr/sfw/bin/zsh.
The /etc/shells file overrides the list of valid shells on the system. For each shell, a single line should be present consisting of the shell's absolute path. A hash mark (#) indicates the beginning of a comment; subsequent characters up to the end of the line are not interpreted. Blank lines are also ignored.
Applications can access the list of shells through getusershell (3C) . If /etc/shells is not present, the default list of valid shells is:
Invalid shells in /etc/shells could cause unexpected behavior, such as being unable to log in by way of ftp(1).
list of shells on system