tset(1)tset(1)Nametset - set terminal mode
Syntaxtset [options] [-m[ident] [test baudrate]:type] ... [ type ]
reset ...
Description
The command sets up your terminal when you first log in to a UNIX sys‐
tem. It does terminal dependent processing such as setting erase and
kill characters, setting or resetting delays, sending any sequences
needed to properly initialized the terminal, and the like. It first
determines the type of terminal involved, and then does necessary ini‐
tializations and mode settings. The type of terminal attached to each
UNIX port is specified in the /etc/ttys database. Type names for ter‐
minals may be found in the database. If a port is not wired perma‐
nently to a specific terminal (not hardwired) it is given an appropri‐
ate generic identifier such as dialup.
In the case where no arguments are specified, simply reads the terminal
type out of the environment variable TERM and re-initializes the termi‐
nal. The rest of this manual concerns itself with mode and environment
initialization, typically done once at login, and options used at ini‐
tialization time to determine the terminal type and set up terminal
modes.
When used in a startup script (.profile for users or .login for users)
it is desirable to give information about the type of terminal you will
usually use on ports which are not hardwired. These ports are identi‐
fied in as dialup or plugboard or arpanet. To specify what terminal
type you usually use on these ports, the -m (map) option flag is fol‐
lowed 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 ``If I'm on this
kind of port, guess that I'm 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 may be used for the identifier.
A baudrate is specified as with and is compared with the speed of the
diagnostic output (which should be the control terminal). The baud
rate test may be any combination of: >, @, <, and !; @ means ``at'' and
! inverts the sense of the test. To avoid problems with metacharac‐
ters, it is best to place the entire argument to -m within ``´'' char‐
acters; users of must also put a ``\'' before any ``!'' used here.
Thus
tset \-m ´dialup>300:adm3a´ -m dialup:dw2 -m ´plugboard:?adm3a´
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; to a dw2 if the port is (oth‐
erwise) a dialup (that is, at 300 baud or less). (The examples given
here appear to take up more than one line, for text processing reasons.
When you type in real commands, you must enter them entirely on one
line.) If the type finally determined by begins with a question mark,
the user is asked if he really wants that type. A null response means
to use that type; otherwise, another type can be entered which is used
instead. Thus, in the above case, the user is queried on a plugboard
port as to whether they are actually using an adm3a.
If no mapping applies and a final type option, not preceded by a -m, is
given on the command line then that type is used; otherwise the identi‐
fier found in the database is assumed 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 deter‐
mined by and information about the terminal's capabilities to a shell's
environment. This can be done using the - option; using the Bourne
shell,
export TERM; TERM=`tset - options...`
Or using the C shell,
setenv TERM `tset - options...`
With it is convenient to make an alias in your .cshrc:
alias tset ´setenv TERM `tset - \!*`´
Either of these aliases allow the command
tset 2621
to be invoked at any time from your login If you are using the Bourne
shell, it is not possible to get this aliasing effect with a shell
script, because shell scripts cannot set the environment of their par‐
ent.
These commands cause to place the name of your terminal in the variable
TERM in the environment. For further information, see
Once the terminal type is known, engages in terminal driver mode set‐
ting. This normally involves sending an initialization sequence to the
terminal, setting the single character erase (and optionally the 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.
On terminals that can backspace but not overstrike (such as a CRT), and
when the erase character is the default erase character (`#' on stan‐
dard systems), the erase character is changed to BACKSPACE (Control-H).
If is invoked as it will set cooked and echo modes, turn off cbreak and
raw modes, turn on newline translation, and restore special characters
to a sensible state before any terminal dependent processing is done.
Any special character that is found to be NULL or ``-1'' is reset to
its default value.
This is most useful after a program dies leaving a terminal in a funny
state. You may have to type ``<LF>reset<LF>'' to get it to work since
<CR> may not work in this state. Often none of this will echo.
Options
- Name of terminal is output on stndout, captured by the shell, and
placed in the environment variable TERM.
-ec Uses the specified character as the erase character. The default
is the backspace character on the terminal, usually ^H. The char‐
acter c can either be typed directly, or entered using the hat
notation used here.
-I Suppresses transmitting terminal initialization strings.
-kc Uses the specified character as the kill character. It is similar
to -e but for the line kill character rather than the erase char‐
acter; c defaults to ^X (for purely historical reasons). The kill
characters is left alone if -k is not specified. The hat notation
can also be used for this option.
-n Initializes the new tty driver, if applicable. On systems with
the Berkeley 4BSD tty driver, specifies that the new tty driver
modes should be initialized for this terminal. For a CRT, the
CRTERASE and CRTKILL modes are set only if the baud rate is 1200
or greater. See for more detail.
-Q Suppresses erase and kill character message.
-s Output commands for TERM. This option can be used with tset-s
... and is to be preferred to setenv TERM tset - ... because -s
also sets the TERMCAP variable.
-S Similar to -s, but outputs 2 strings suitable for use in csh files
as follows:
set noglob
set term=(`tset -S .....`)
setenv TERM $term[1]
setenv TERMCAP "$term[2]"
unset term
unset noglob
Restrictions
For compatibility with earlier versions of a number of flags are
accepted whose use is discouraged:
-d type equivalent to -m dialup:type
-p type equivalent to -m plugboard:type
-a type equivalent to -m arpanet:type
-E c Sets the erase character to c only if the terminal can
backspace.
- prints the terminal type on the standard output
-r prints the terminal type on the diagnostic output.
Examples
These examples all assume the Bourne shell and use the - option. If
you use use one of the variations described above. Note that a typical
use of in a .profile or .login will also use the -e and -k options, and
often the -n or -Q options as well. These options have not been
included here to keep the examples small. (NOTE: some of the examples
given here appear to take up more than one line, for text processing
reasons. When you type in real commands, you must enter them entirely
on one line.)
At the moment, you are on a 2621. This is suitable for typing by hand
but not for a .profile, unless you are always on a 2621.
export TERM; TERM=`tset - 2621`
You have an h19 at home which you dial up on, but your office terminal
is hardwired and known in /etc/ttys.
export TERM; TERM=`tset - -m dialup:h19`
You have a switch which connects everything to everything, making it
nearly impossible to key on what port you are coming in on. You use a
vt100 in your office at 9600 baud, and dial up to switch ports at 1200
baud from home on a 2621. Sometimes you use someone elses 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
greater than and question mark from interpretation by the shell.
export TERM; TERM=`tset - -m 'switch>1200:?vt100' -m
'switch<=1200:2621'
All of the above entries will fall back on the terminal type specified
in if none of the conditions hold. The following entry is appropriate
if you always dial up, always 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 - .EE
If the file
is not properly installed and you want to
key entirely on the baud rate, the following can be used:
export TERM; TERM=`tset - -m '>1200:vt100' 2621`
Here is a fancy example to illustrate the power of and to hopelessly
confuse anyone who has made it this far. 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
go to, 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, all of which are properly entered in You want your erase char‐
acter set to control H, your kill character set to control U, and do
not want 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`
Files
port name to terminal type mapping database
terminal capability database
See Alsocsh(1), sh(1), stty(1), termcap(5), ttys(5), environ(7)tset(1)