tset, reset - Initializes terminals
tset [-echaracter|-Echaracter] [-icharacter] [-kcharacter] [-IQrsS] [-] [-m]['port_type][baud_rate][:type...']
reset [-echaracter|-Echaracter] [-icharacter] [-kcharacter] [-IQrsS] [-] [-m]['port_type][baud_rate][:type...']
command initializes your terminal when you
first log in to a system.
Sets the Erase character to
on all terminals, the default being the Backspace character (on many systems,
can be typed
directly or entered using circumflex notation, for example,
Sets the Erase character to
only if the terminal can backspace.
Sets the Interrupt character to
for all terminals, the default being <Ctrl-c>
can be typed directly or entered
using circumflex notation, for example,
Suppresses transmission of terminal initialization strings.
Sets the line Kill character to
on all terminals, the default being <Ctrl-x>
systems. The Kill character is left alone if
is not specified.
can be typed directly or entered using circumflex
notation, for example,
Maps port type
baud_rate, and terminal type
at startup. (See
Suppresses printing of
Erase set to
Kill set to
Prints the terminal type on the diagnostic output.
Prints the sequence of
commands to initialize the
variables, The shell for which commands are produced depends on the setting
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
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 terminal.
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 the terminal.
When used in a start-up script ( .profile for sh users or .login 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 identifier.
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 hardwired ports.
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 .cshrc file by entering:
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.
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
the prompt is displayed. You might have to enter
to work, since carriage-return
might not work in this state. Often, none of this will echo.
The tset command was designed to use the termcap database.
The following options are accepted for compatibility with earlier versions
tset, but the use of these options is discouraged:
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 .profile or .login 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
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
characters from interpretation by the shell.
export TERM; TERM=`tset - -m 'switch>1200:?vt100' \
Terminal information database.
Commands: csh(1), sh(1), stty(1), tty(1)