TSET(1B) BSD Compatibility Package Commands TSET(1B)
NAME
tset, reset - establish or restore terminal characteristics
SYNOPSIS
tset [
-InQrs] [
-ec] [
-kc]
[
-m [
port-ID [
baudrate] :
type]...] [
type]
reset [
-] [
-ec] [
-I] [
-kc]
[
-n] [
-Q] [
-r] [
-s]
[
-m [
indent] [
test baudrate] :
type]... [
type]
DESCRIPTION
The
tset utility sets up your terminal, typically when you first log
in. 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.
tset first
determines the
type of terminal involved, and then does necessary
initializations and mode settings. If a port is not wired permanently
to a specific terminal (not hardwired) it is given an appropriate
generic identifier such as
dialup.
reset clears the terminal settings by turning off CBREAK and RAW
modes, output delays and parity checking, turns on NEWLINE
translation, echo and TAB expansion, and restores undefined special
characters to their default state. It then sets the modes as usual,
based on the terminal type (which will probably override some of the
above). See
stty(1) for more information. All arguments to
tset may
be used with
reset.
reset also uses
rs= and
rf= to reset the
initialization string and file. This is useful after a program dies
and leaves the terminal in a funny state. Often in this situation,
characters will not echo as you type them. You may have to type
LINEFEED
reset LINEFEED since RETURN may not work.
When no arguments are specified,
tset reads the terminal type from
the
TERM environment variable and re-initializes the terminal, and
performs initialization of mode, environment and other options at
login time to determine the terminal type and set up terminal modes.
When used in a startup script (
.profile for
sh(1) users or
.login for
csh(1) users) it is desirable to give information about the type of
terminal you will usually use on ports that are not hardwired. Any of
the alternate generic names given in the file
/etc/termcap are
possible identifiers. Refer to the
-m option below for more
information. 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.
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. This can be done using the
-,
-s, or
-S options.
For the Bourne shell, put this command in your
.profile file:
eval `tset
-s options...`
or using the C shell, put these commands in your
.login file:
set noglob
eval `tset
-s options...`unset noglob
With the C shell, it is also convenient to make an alias in your
.cshrc file:
alias ts 'eval `tset
-s \!*`'
This also allows the command:
ts 2621
to be invoked at any time to set the terminal and environment. It is
not possible to get this aliasing effect with a Bourne shell script,
because shell scripts cannot set the environment of their parent. If
a process could set its parent's environment, none of this nonsense
would be necessary in the first place.
Once the terminal type is known,
tset sets the terminal driver mode.
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 erase character is changed
as if
-e had been used.
OPTIONS
- The name of the terminal finally decided upon is output on
the standard output. This is intended to be captured by the
shell and placed in the
TERM environment variable.
-ec Set the erase character to be the named character
c on all
terminals. Default is the BACKSPACE key on the keyboard,
usually
^H (CTRL-H). The character
c can either be typed
directly, or entered using the circumflex-character notation
used here.
-ic Set the interrupt character to be the named character
c on
all terminals. Default is
^C (CTRL-C). The character
c can
either be typed directly, or entered using the circumflex-
character notation used here.
-I Suppress transmitting terminal-initialization strings.
-kc Set the line kill character to be the named character
c on
all terminals. Default is
^U (CTRL-U). The kill character is
left alone if
-k is not specified. Control characters can be
specified by prefixing the alphabetical character with a
circumflex (as in CTRL-U) instead of entering the actual
control key itself. This allows you to specify control keys
that are currently assigned.
-n Specify that the new tty driver modes should be initialized
for this terminal. Probably useless since
stty new is the
default.
-Q Suppress printing the `
Erase set to' and `
Kill set to'
messages.
-r In addition to other actions, reports the terminal type.
-s Output commands to set and export
TERM. This can be used with
set noglob eval `tset -s ...` unset noglob to bring the terminal information into the environment. Doing
so makes programs such as
vi(1) start up faster. If the
SHELL environment variable ends with
csh, C shell commands are
output, otherwise Bourne shell commands are output.
-m [
port-ID [
baudrate ]
: type ] ...
Specify (map) a terminal type when connected to a generic port
(such as
dialup or
plugboard) identified by
port-ID. The
baudrate argument can be used to check the baudrate of the port and set
the terminal type accordingly. The target rate is prefixed by
any combination of the following operators to specify the
conditions under which the mapping is made:
> Greater than
@ Equals or ``at''
< Less than
! It is not the case that (negates the above operators)
? Prompt for the terminal type. If no response is given, then
type is selected by default.
In the following example, the terminal type is set to
adm3a if
the port is a dialup with a speed of greater than 300 or to
dw2 if the port is a dialup at 300 baud or less. In the third case,
the question mark preceding the terminal type indicates that the
user is to verify the type desired. A
NULL response indicates
that the named type is correct. Otherwise, the user's response is
taken to be the type desired.
tset -m 'dialup>300:adm3a' -m 'dialup:dw2' -m 'plugboard:?adm3a' To prevent interpretation as metacharacters, the entire argument
to
-m should be enclosed in single quotes. When using the C
shell, exclamation points should be preceded by a backslash (\).
EXAMPLES
These examples all use the `
-' option. A typical use of
tset 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 been omitted here to
keep the examples short.
Example 1: Selecting a terminal
To select a 2621, you might put the following sequence of commands in
your
.login file (or
.profile for Bourne shell users).
set noglob eval `tset -s 2621` unset noglob If you want to make the selection based only on the baud rate, you
might use the following:
set noglob eval `tset -s -m '>1200:wy' 2621` unset noglob Example 2: Selecting terminals according to speed or baud rate
If you have a switch which connects to various ports (making it
impractical to identify which port you may be connected to), and use
various terminals from time to time, you can select from among those
terminals according to the
speed or baud rate. In the example below,
tset will prompt you for a terminal type if the baud rate is greater
than 1200 (say, 9600 for a terminal connected by an RS-232 line), and
use a Wyse(R) 50 by default. If the baud rate is less than or equal
to 1200, it will select a 2621. Note the placement of the question
mark, and the quotes to protect the
> and
? from interpretation by
the shell.
set noglob eval `tset -s -m 'switch>1200:?wy' -m 'switch<=1200:2621'` unset noglob Example 3: Selecting the terminal used most often
The following entry is appropriate if you always dial up, always at
the same baud rate, on many different kinds of terminals, and the
terminal you use most often is an
adm3a.
set noglob eval `tset -s ?adm3a` unset noglob Example 4: Selecting a terminal with specific settings
The following example quietly sets the erase character to
BACKSPACE, and kill to
CTRL-U. If the port is switched, it selects a Concepttm
100 for speeds less than or equal to 1200, and asks for the terminal
type otherwise (the default in this case is a Wyse 50). If the port
is a direct dialup, it selects Concept 100 as the terminal type. If
logging in over the
ARPANET, the terminal type selected is a
Datamedia(R) 2500 terminal or emulator. Note the backslash escaping
the
NEWLINE at the end of the first line in the example.
set noglob
eval `tset
-e -k^U
-Q -s -m 'switch<=1200:concept100'
-m\
'switch:?wy'
-m dialup:concept100
-m arpanet:dm2500`
unset noglob
FILES
.login .profile /etc/termcapSEE ALSO
csh(1),
sh(1),
stty(1),
vi(1),
attributes(7),
environ(7)NOTES
The
tset command is one of the first commands a user must master when
getting started on a
UNIX system. Unfortunately, it is one of the
most complex, largely because of the extra effort the user must go
through to get the environment of the login shell set. Something
needs to be done to make all this simpler, either the
login program
should do this stuff, or a default shell alias should be made, or a
way to set the environment of the parent should exist.
This program cannot intuit personal choices for erase, interrupt and
line kill characters, so it leaves these set to the local system
standards.
It could well be argued that the shell should be responsible for
ensuring that the terminal remains in a sane state; this would
eliminate the need for the
reset program.
February 15, 1995 TSET(1B)