vc-get-tty — set up the environment appropriate to a virtual terminal and chain
vc-get-tty [--long-hostname] [--term type] {terminal-device-name} {next-prog}
vc-get-tty is a chain-loading utility that sets up
environment variables appropriate to a specified virtual console, secures the
device against access by other users, and then chain loads to
next-prog with the
execvp(3)
function.
next-prog may contain its own command line options,
which vc-get-tty will ignore.
vc-get-tty sets the TTY environment variable to
the full device filename of the controlling terminal.
Programs such as
open-controlling-tty(1),
login-banner(1) and
login-process(1)
will make use of this environment variable as the name of the controlling terminal.
It determines the terminal character device filename from the passed name.
This can be just the absolute pathname of the device file itself or a relative
pathname (such as tty1).
If it is a relative pathname, vc-get-tty tries first
prefixing /dev/ and looking for a file,
then prefixing /var/dev/,
and
then prefixing /run/dev/.
vc-get-tty sets the HOST environment variable to the machine
hostname, as obtained from the
gethostname(3)
library function.
If the --long-hostname command line option is present, the machine
hostname is assigned to the variable as-is.
Otherwise, it is truncated at the first dot.
Programs such as
login-process(1)
will make use of this environment variable.
vc-get-tty sets the TERM environment variable to a system-dependent
default for virtual consoles.
It does not make any attempt to deduce terminal types, as the gettys that
talk to serial terminals do, or read the BSD /etc/ttys database.
The terminal types for virtual consoles are effectively fixed by what the
console driver emulates on each operating system, and can be hardwired.
The terminal types for virtual consoles on Linux are fixed as linux.
The terminal types for virtual consoles on FreeBSD are fixed as xterm.
In theory, the console driver on FreeBSD could emulate either
xterm or cons25.
But in practice cons25 has been obsolete ever since the move (in FreeBSD
9.0) to enable UTF-8 on the console, which completely replaced the driver's
escape sequence handler.
The terminal types for virtual consoles on NetBSD are fixed as wsvt25.
In theory, NetBSD also supports sun and dumb terminals.
The --term command line option is available for overriding these hardwired
values, but there is little reason for using it as the terminal types for
virtual consoles have not changed for several years on FreeBSD and for a
decade and a half (as of 2013) on Linux.
vc-get-tty expects to be run either directly from
init(1)
or under a daemon supervisor of some sort.
As such, it expects to start up with an already safe
environment, open file descriptors, and resource limits for a process that is
running under the aegis of the superuser.
To prevent a race condition in
open-controlling-tty(1)
(q.v.),
vc-get-tty ensures that the virtual console is owned
by the effective UID of the process, and has rw-------
permissions.