TTYS(5) | File Formats Manual | TTYS(5) |
ttys
— terminal
initialization information
The file ttys
contains information that is
used by various routines to initialize and control the use of terminal
special files. This information is read with the
getttyent(3) library routines. There
is one line in the ttys
file per special device
file. Fields are separated by tabs and/or spaces. Fields comprised of more
than one word should be enclosed in double quotes (``"''). Blank lines
and comments may appear anywhere in the file; comments are delimited by hash
marks (``#'') and new lines. Any unspecified fields will default to
null.
The first field is normally the name of the terminal special file as it is found in /dev. However, it can be any arbitrary string when the associated command is not related to a tty.
The second field of the file is the command to execute for the line, usually getty(8), which initializes and opens the line, setting the speed, waiting for a user name and executing the login(1) program. It can be, however, any desired command, for example the start up for a window system terminal emulator or some other daemon process, and can contain multiple words if quoted.
The third field is the type of terminal usually connected to that
tty line, normally the one found in the
termcap(5) data base file. The
environment variable TERM
is initialized with the
value by either getty(8) or
login(1).
The remaining fields set flags in the ty_status entry (see getttyent(3)), specify a window system process that launchd(8) will maintain for the terminal line, optionally determine the type of tty (whether dialin, network or otherwise), or specify a tty group name that allows the login class database (see login.conf(5)) to refer to many ttys as a group, to selectively allow or deny access or enable or disable accounting facilities for ttys as a group.
As flag values, the strings ``on'' and ``off'' specify that launchd(8) should (should not) execute the command given in the second field. ``onifconsole'' will cause this line to be enabled if and only if it is an active kernel console device (it is equivalent to ``on'' in this case). The flag ``onifexists'' will cause this line to be enabled if and only if the name exists. If the name starts with a ``/'', it will be considered an absolute path. Otherwise, it is considered a path relative to /dev. The flag ``secure'' (if the console is enabled) allows users with a uid of 0 to login on this line. The flag ``dialup'' indicates that a tty entry describes a dialin line, and ``network'' is obsolete and does nothing. Either of these strings may also be specified in the terminal type field. The string ``window='' may be followed by a quoted command string which launchd(8) will execute before starting the command specified by the second field.
The string ``group='' may be followed by a group name comprised of alphanumeric characters that can be used by login.conf(5) to refer to many tty lines as a group to enable or disable access and accounting facilities. If no group is specified, then the tty becomes a member of the group "none". For backwards compatibility, the ``group='' should appear last on the line, immediately before the optional comment.
Both the second field and any command specified with ``window=''
will be split into words and executed using
execve(2). Words are separated by any
combinations of tabs and spaces. Arguments containing whitespace should be
enclosed in single quotes ('
). Note that no
shell-style globbing or other variable substitution occurs.
Numeric sequences of terminals can be represented in a more compact format. A matching pair of square bracket may enclose two numbers (the start and stop values), separated by a hyphen. The numbers are assumed to be decimal, unless prefixed with ``0x'', in which case they are interpreted as hexadecimal. The number of characters (not including any ``0x'') in the starting value gives the minimum width; sequence values are zero padded up to this width. Thus ``tty[00-07]'' represents the eight terminals ``tty00'' through ``tty07''.
# root login on console at 1200 baud console "/usr/libexec/getty std.1200" vt100 on secure # the sequence of eight terminals tty00 through tty07 tty[00-07] "/usr/libexec/getty std.9600" vt100 on # Network pseudo ttys -- don't enable getty ttyp0 none network ttyp1 none network off # All sixteen of a pseudo tty sequence ttyq[0x0-0xf] none network
login(1), getttyent(3), ttyslot(3), gettytab(5), termcap(5), getty(8), launchd(8)
A ttys
file appeared in
Version 6 AT&T UNIX.
June 1, 2021 | macOS 14.6 |