getusershell, setusershell, endusershell — get permitted user shells


#include <unistd.h>

char *getusershell(void);

void setusershell(void);

void endusershell(void);

Feature Test Macro Requirements for glibc (see feature_test_macros(7)):

getusershell(), setusershell(), endusershell():

    Since glibc 2.21:
    In glibc 2.19 and 2.20:
    Up to and including glibc 2.19:


The getusershell() function returns the next line from the file /etc/shells, opening the file if necessary. The line should contain the pathname of a valid user shell. If /etc/shells does not exist or is unreadable, getusershell() behaves as if /bin/sh and /bin/csh were listed in the file.

The setusershell() function rewinds /etc/shells.

The endusershell() function closes /etc/shells.

Return Value

The getusershell() function returns NULL on end-of-file.




For an explanation of the terms used in this section, see attributes(7).

Interface Attribute Value
getusershell(), setusershell(),
Thread safety MT-Unsafe

Conforming to


See Also



This page is part of release 5.04 of the Linux man-pages project. A description of the project, information about reporting bugs, and the latest version of this page, can be found at

Referenced By

ksu(1), shells(5).

The man pages endusershell(3) and setusershell(3) are aliases of getusershell(3).

2016-03-15 GNU Linux Programmer's Manual