Content-type: text/html Man page of tset


Section: User Commands (1)
Index Return to Main Contents


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...']

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 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.

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 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 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 .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 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 .profile 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' \
        m- 'switch<=1200:2621'`

(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 'switch>1200:?vt100' \
        -m 'switch<=1200:2621'`
(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)

Files:  termcap(4)




This document was created by man2html, using the manual pages.
Time: 02:42:57 GMT, October 02, 2010