'\" t .\" Copyright, the authors of the Linux man-pages project .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .TH getusershell 3 (date) "Linux man-pages (unreleased)" .SH NAME getusershell, setusershell, endusershell \- get permitted user shells .SH LIBRARY Standard C library .RI ( libc ,\~ \-lc ) .SH SYNOPSIS .nf .B #include .P .B char *getusershell(void); .B void setusershell(void); .B void endusershell(void); .fi .P .RS -4 Feature Test Macro Requirements for glibc (see .BR feature_test_macros (7)): .RE .P .BR getusershell (), .BR setusershell (), .BR endusershell (): .nf Since glibc 2.21: .\" commit 266865c0e7b79d4196e2cc393693463f03c90bd8 _DEFAULT_SOURCE In glibc 2.19 and 2.20: _DEFAULT_SOURCE || (_XOPEN_SOURCE && _XOPEN_SOURCE < 500) Up to and including glibc 2.19: _BSD_SOURCE || (_XOPEN_SOURCE && _XOPEN_SOURCE < 500) .fi .SH DESCRIPTION The .BR getusershell () function returns the next line from the file .IR /etc/shells , opening the file if necessary. The line should contain the pathname of a valid user shell. If .I /etc/shells does not exist or is unreadable, .BR getusershell () behaves as if .I /bin/sh and .I /bin/csh were listed in the file. .P The .BR setusershell () function rewinds .IR /etc/shells . .P The .BR endusershell () function closes .IR /etc/shells . .SH RETURN VALUE The .BR getusershell () function returns NULL on end-of-file. .SH FILES .I /etc/shells .SH ATTRIBUTES For an explanation of the terms used in this section, see .BR attributes (7). .TS allbox; lbx lb lb l l l. Interface Attribute Value T{ .na .nh .BR getusershell (), .BR setusershell (), .BR endusershell () T} Thread safety MT-Unsafe .TE .SH STANDARDS None. .SH HISTORY 4.3BSD. .SH SEE ALSO .BR shells (5)