tset, reset - Initializes terminals
tset [-echaracter | -Echaracter] [-icharacter] [-kcharacter]
[-IQrsS] [-] [-m] ['port_type] [baud_rate]
reset [-echaracter | -Echaracter] [-icharacter] [-kcharacter]
[-IQrsS] [-] [-m] ['port_type] [baud_rate]
The tset command initializes your terminal when you first
log in to a system.
Sets the Erase character to character on all terminals,
the default being the Backspace character (on many systems,
<Ctrl-h>). The character can be typed directly or
entered using circumflex notation, for example, ^H. Sets
the Erase character to character only if the terminal can
backspace. Sets the Interrupt character to character for
all terminals, the default being <Ctrl-c> on many systems.
character can be typed directly or entered using circumflex
notation, for example, ^C. Suppresses transmission
of terminal initialization strings. Sets the line Kill
character to character on all terminals, the default being
<Ctrl-x> on many systems. The Kill character is left alone
if -k is not specified. character can be typed directly
or entered using circumflex notation, for example, ^X.
Maps port type port_type, baud rate baud_rate, and terminal
type type at startup. (See DESCRIPTION.) Suppresses
printing of Erase set to and Kill set to messages. Prints
the terminal type on the diagnostic output. Prints the
sequence of csh or sh commands to initialize the TERM and
TERMCAP environment variables, The shell for which commands
are produced depends on the setting of the SHELL
variable. Writes the name of the terminal finally decided
upon to standard output. This is intended to be captured
by the shell and placed in the TERM environment variable.
The tset command first determines the type of terminal
involved, and then does necessary initializations and mode
settings, including terminal-dependent processing such as
setting Erase and Kill characters, setting or resetting
delays, and sending any sequences needed to properly initialize
The type of terminal attached to each port is specified by
a parameter to the getty running on that port, and passed
to subprocesses through the TERM environment variable.
Type names for terminals can be found in the termcap
database. If a port is not permanently wired to a specific
terminal (not hardwired), it is given an appropriate
generic identifier, such as dialup.
When no arguments are specified, tset simply reads the
terminal type out of the TERM variable and reinitializes
When used in a start-up script ( for sh users or for csh
users), it is desirable to give information about the type
of terminal you usually use on ports that are not hardwired.
To specify the terminal type for these ports, specify
the -m (map) option, followed by the appropriate port
type identifier, an optional baud rate specification, and
the terminal type. (The effect is to map from some conditions
to a terminal type, that is, to tell tset "If I am
on this kind of port, guess that I am on that kind of terminal.")
If more than one mapping is specified, the first
applicable mapping prevails. A missing port type identifier
matches all identifiers. Any of the alternate generic
names given in the termcap database can be used for the
A baud rate is specified as with stty, and is compared
with the speed of the diagnostic output (which should be
the control terminal). The baud rate test can be any combination
of the following characters: (dot), @ (at sign),
relational operators such as < (left angle bracket), and !
(exclamation point). (@ is the same as "equals", and !
inverts the sense of the test.) To avoid problems with
metacharacters, place the entire argument to -m within ' '
(single quotes); users of csh must also put a \ (backslash)
before any ! (exclamation point) used here.
Therefore, entering the following example causes the terminal
type to be set to an adm3a if the port in use is a
dialup at a speed greater than 300 baud; it is set to a
dw2 if the port is a dialup at 300 baud or less: tset -m
'dialup>300:adm3a' -m dialup:dw2 -m 'plugboard:?adm3a'
If the type finally determined by tset begins with a ?
(question mark), users are asked if they want that type. A
null response means to use that type; otherwise, another
type can be entered. Thus, in the preceding case, you are
queried on a plugboard port as to whether you are actually
using an adm3a.
If no mapping applies and a final type argument not preceded
by a -m is given on the command line, then that type
is used; otherwise, the type passed to getty is taken to
be the terminal type. This should always be the case for
It is usually desirable to return the terminal type, as
finally determined by tset, and information about the terminal's
capabilities to a shell's environment. Returning
the terminal type can be done using the - option, if you
are using the Bourne shell, as follows:
export TERM; TERM= `tset - option ...`
or if you are using the C shell, as follows:
set noglob; eval `tset -s option ...`
It is also convenient to make an alias in your file by
alias ts 'set noglob; eval `tset -s \!*`'
The -s option allows the tset command to be invoked at any
time to set the terminal and environment. A similar effect
can be achieved using a shell function.
These commands cause tset to place the name of your
terminal in the TERM environment variable.
Once the terminal type is known, tset engages in terminal
driver mode setting. This normally involves sending an
initialization sequence to the terminal, setting the single-character
Erase and (optionally) line Kill (full-line
erase) characters, and setting special character delays.
Tab and newline expansion are turned off during transmission
of the terminal initialization sequence.
If tset is invoked as reset, it sets cooked and echo
modes, turns off cbreak and RAW modes, turns on newline
translation, and restores special characters to a sensible
state before any terminal-dependent processing is done.
Any special character that is found to be NUL or -1 is
reset to its default value. All options to tset can be
used with reset.
The reset command is most useful after a program dies,
leaving a terminal in a state where characters are not
echoed or the terminal does not respond when you press
<Return>, but the prompt is displayed. You might have to
enter <LF>reset<LF> to get reset to work, since carriagereturn
might not work in this state. Often, none of this
The tset command was designed to use the termcap database.
The following options are accepted for compatibility with
earlier versions of tset, but the use of these options is
discouraged: Equivalent to -m dialup:type. Equivalent to
-m plugboard:type. Equivalent to -m arpanet:type.
These examples all assume the use of Bourne shell and the
- option. If you use csh, use one of the variations previously
described. Note that a typical use of tset in a or
file also uses the -e and -k options, and often uses the
-n or -Q option as well. These options were not included
here to keep the examples short.
Note that some of these take up more than one line; however,
you must enter tset commands entirely on one line.
Assuming you are on a 2621, the following command line is
suitable for use in an interactive shell, but not for a
file, unless you are always on a 2621: export TERM;
TERM=`tset - 2621` You have an h19 at home that you dial
up on, but your office terminal is hardwired: export TERM;
TERM=`tset - -m dialup:h19"` You have a switch that connects
everything to everything, making it nearly impossible
to key on what port you are coming in on. You use a
VT100 terminal in your office that runs at 9600 baud, and
you dial up to switch ports at 1200 baud from home on a
2621. Sometimes you use someone else's terminal at work,
so you want it to ask you to make sure what terminal type
you have at high speeds, but at 1200 baud you are always
on a 2621. Note the placement of the question mark, and
the quotes to protect the < (left angle bracket) and ?
(question mark) characters from interpretation by the
shell. export TERM; TERM=`tset - -m 'switch>1200:?vt100'
(Enter the command entirely on one line, not on two
lines as shown above.)
All of the preceding entries fall back, if none of
the conditions hold, on the terminal type specified
by the value of the TERM variable when tset is
invoked. The following entry is appropriate if you
always dial up at the same baud rate on many different
kinds of terminals. Your most common terminal
is an adm3a. It always asks you what kind of
terminal you are on, defaulting to adm3a: export
TERM; TERM=`tset - ?adm3a` If you want to key
entirely on the baud rate, the following entry can
be used: export TERM; TERM=`tset - -m
(Enter the command entirely on one line, not on two
lines as shown above.) You dial up at 1200 baud or
less on a concept100, sometimes over switch ports
and sometimes over regular dialups. You use various
terminals at speeds higher than 1200 over switch
ports, most often the terminal in your office,
which is a VT100. However, sometimes you log in
from the university you used to attend over the
ARPANET; in this case, you are on an ALTO emulating
a dm2500. You also often log in on various hardwired
ports, such as the console. You want your
Erase character set to <Ctrl-h> and your Kill character
set to <Ctrl-u>, and you do not want tset to
print the Erase set to Backspace, Kill set to Control
U message. export TERM TERM=`tset -e -k^U -Q
- "-m 'switch<=1200:concept100' \
"-m 'switch:?vt100' -m dialup:concept100 \
"-m arpanet: dm2500"`
(Enter the command entirely on one line, not on
three lines as shown above.)
Terminal information database.
Commands: csh(1), sh(1), stty(1), tty(1)
[ Back ]