Annotation of 43BSDReno/usr.bin/tset/tset.1, revision 1.1

1.1     ! root        1: .\" Copyright (c) 1985, 1990 The Regents of the University of California.
        !             2: .\" All rights reserved.
        !             3: .\"
        !             4: .\" Redistribution and use in source and binary forms are permitted provided
        !             5: .\" that: (1) source distributions retain this entire copyright notice and
        !             6: .\" comment, and (2) distributions including binaries display the following
        !             7: .\" acknowledgement:  ``This product includes software developed by the
        !             8: .\" University of California, Berkeley and its contributors'' in the
        !             9: .\" documentation or other materials provided with the distribution and in
        !            10: .\" all advertising materials mentioning features or use of this software.
        !            11: .\" Neither the name of the University nor the names of its contributors may
        !            12: .\" be used to endorse or promote products derived from this software without
        !            13: .\" specific prior written permission.
        !            14: .\" THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
        !            15: .\" WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
        !            16: .\" MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
        !            17: .\"
        !            18: .\"     @(#)tset.1     6.5 (Berkeley) 7/24/90
        !            19: .\"
        !            20: .Dd July 24, 1990
        !            21: .Dt TSET 1
        !            22: .Os BSD 4
        !            23: .Sh NAME
        !            24: .Nm tset
        !            25: .Nd terminal dependent initialization
        !            26: .Sh SYNOPSIS
        !            27: .Nm tset
        !            28: .Op Ar options
        !            29: .Cx \&[\ \&
        !            30: .Fl m
        !            31: .Cx \&\ \&
        !            32: .Op Ar ident
        !            33: .Op Ar test baudrate
        !            34: .Cx Cm \&:
        !            35: .Ar type
        !            36: .Cx \&]\ \&...
        !            37: .Cx
        !            38: .Op  type
        !            39: .Pp
        !            40: .Nm reset
        !            41: .Op Ar options
        !            42: .Cx \&[\ \&
        !            43: .Fl m
        !            44: .Cx \&\ \&
        !            45: .Op Ar ident
        !            46: .Op Ar test baudrate
        !            47: .Cx Cm \&:
        !            48: .Ar type
        !            49: .Cx \&]\ \&...
        !            50: .Cx
        !            51: .Op  type
        !            52: .Sh DESCRIPTION
        !            53: .Nm Tset
        !            54: sets up your terminal when you first log in to a UNIX system.
        !            55: It does terminal dependent processing such as setting
        !            56: erase and kill characters, setting or resetting delays,
        !            57: sending any sequences needed to properly initialized the terminal,
        !            58: and the like.
        !            59: It first determines the
        !            60: .Ar type
        !            61: of terminal involved,
        !            62: and then does necessary initializations and mode settings.
        !            63: The type of terminal attached to each
        !            64: UNIX
        !            65: port is specified in the
        !            66: .Xr ttys  5
        !            67: database.
        !            68: Type names for terminals may be found in the
        !            69: .Xr termcap  5
        !            70: database.
        !            71: If a port is not wired permanently to a specific terminal (not hardwired)
        !            72: it will be given an appropriate generic identifier such as
        !            73: .Ar dialup  .
        !            74: .Pp
        !            75: In the case where no arguments are specified,
        !            76: .Nm tset
        !            77: simply reads the terminal type out of the environment variable
        !            78: .Ev TERM
        !            79: and re-initializes the terminal.  The rest of this manual concerns
        !            80: itself with mode and environment initialization,
        !            81: typically done once at login, and options
        !            82: used at initialization time to determine the terminal type and set up
        !            83: terminal modes.
        !            84: .Pp
        !            85: .Tw Ds
        !            86: .Tp Cx Fl e
        !            87: .Ar c
        !            88: .Cx
        !            89: set the erase character to be the named character
        !            90: .Ar c
        !            91: on all terminals,
        !            92: the default being the backspace character on the terminal, usually ^H.
        !            93: The character
        !            94: .Ar c
        !            95: can either be typed directly, or entered using the hat
        !            96: notation used here.
        !            97: .Tp Cx Fl k
        !            98: .Ar c
        !            99: .Cx
        !           100: is similar to
        !           101: .Fl e
        !           102: but for the line kill character rather than the erase character;
        !           103: .Ar c
        !           104: defaults to ^X (for purely historical reasons).
        !           105: The kill characters is left alone if
        !           106: .Fl k
        !           107: is not specified.
        !           108: The hat notation can also be used for this option.
        !           109: .Tp Cx Fl i
        !           110: .Ar c
        !           111: .Cx
        !           112: is similar to
        !           113: .Fl e
        !           114: but for the interrupt character rather than the erase character;
        !           115: .Ar c
        !           116: defaults to ^C.  The hat notation can also be used for this option.
        !           117: .Tp Fl
        !           118: The name of the terminal finally decided upon is output on the
        !           119: standard output.
        !           120: This is intended to be captured by the shell and placed in the
        !           121: environment variable
        !           122: .Ev TERM.
        !           123: .Tp Fl s
        !           124: Print the sequence of
        !           125: .Xr csh 1
        !           126: commands to initialize the environment variables
        !           127: .Ev TERM
        !           128: and
        !           129: .Ev TERMCAP
        !           130: based on
        !           131: the name of the terminal finally decided upon.
        !           132: .Tp Fl m
        !           133: The
        !           134: .FL m
        !           135: Specify what terminal type to use on specific ports (i.e. map the
        !           136: terminal type to a port as found in
        !           137: .Xr ttys 5 . )
        !           138: See below.
        !           139: .Tp Fl n
        !           140: On systems with the Berkeley 4BSD tty driver,
        !           141: specifies that the new tty driver modes should be initialized for this terminal.
        !           142: For a
        !           143: .Li CRT ,
        !           144: the
        !           145: .Li CRTERASE
        !           146: and
        !           147: .Li CRTKILL
        !           148: modes are set only if the baud rate is 1200 or greater.
        !           149: See
        !           150: .Xr tty 4
        !           151: for more detail.
        !           152: .Tp Fl I
        !           153: suppresses transmitting terminal initialization strings.
        !           154: .Tp Fl Q
        !           155: suppresses printing the
        !           156: .Dq Li Erase set to
        !           157: and
        !           158: .Dq Li Kill set to
        !           159: messages.
        !           160: .Tp
        !           161: .Pp
        !           162: When used in a startup script
        !           163: .Pf \&( Pa \&.profile
        !           164: for
        !           165: .Xr sh  1
        !           166: users or
        !           167: .Pa \&.login
        !           168: for
        !           169: .Xr csh  1
        !           170: users) it is desirable to give information about the type of terminal
        !           171: you will usually use on ports which are not hardwired.
        !           172: These ports are identified in
        !           173: .Xr ttys 5
        !           174: as
        !           175: .Li dialup
        !           176: or
        !           177: .Li plugboard
        !           178: or
        !           179: .Li arpanet ,
        !           180: etc.
        !           181: To specify
        !           182: what terminal type you usually use on these ports, the
        !           183: .Fl m
        !           184: (map) option flag is followed by the appropriate port type identifier,
        !           185: an optional baud rate specification,
        !           186: and the terminal type.
        !           187: (The effect is to ``map'' from some conditions to a terminal type,
        !           188: that is, to tell
        !           189: .Nm tset
        !           190: ``If I'm on this kind of port, guess that I'm on that kind of terminal''.)
        !           191: If more than one mapping is specified, the first applicable mapping prevails.
        !           192: A missing port type identifier matches all identifiers.
        !           193: Any of the alternate generic names given in
        !           194: .Xr termcap 5
        !           195: may be used for the identifier.
        !           196: .Pp
        !           197: A
        !           198: .Ar baudrate
        !           199: is specified as with
        !           200: .Xr stty  1  ,
        !           201: and is compared with the
        !           202: speed of the diagnostic output (which should be the control terminal).
        !           203: The baud rate
        !           204: .Ar test
        !           205: may be any combination of:
        !           206: .Ic \&> ,
        !           207: .Ic \&@ ,
        !           208: .Ic \&< ,
        !           209: and
        !           210: .Ic \&! ;
        !           211: .Ic \&@
        !           212: means ``at''
        !           213: and
        !           214: .Ic \&!
        !           215: inverts the sense of the test.  To avoid problems with metacharacters, it
        !           216: is best to place the entire argument to
        !           217: .Fl m
        !           218: within ``\''' characters; users of
        !           219: .Xr csh  1
        !           220: must also put a ``\e'' before any ``!'' used here.
        !           221: .Pp
        !           222: .Df I
        !           223: tset \-m \'dialup>300:adm3a\' -m dialup:dw2 -m \'plugboard:?adm3a\'
        !           224: .De
        !           225: .Pp
        !           226: causes the terminal type to be set to an
        !           227: .Ar adm3a
        !           228: if the port in use is a dialup at a speed greater than 300 baud;
        !           229: to a
        !           230: .Ar dw2
        !           231: if the port is (otherwise) a dialup (i.e. at 300 baud or less).
        !           232: .Ar NOTE :
        !           233: the examples given here appear to take up more than
        !           234: one line, for text processing reasons.  When you type in real
        !           235: .Nm tset
        !           236: commands, you must enter them entirely on one line.
        !           237: If the
        !           238: .Ar type
        !           239: finally determined by
        !           240: .Nm tset
        !           241: begins with a question mark,
        !           242: the user is asked if s/he really wants that type.
        !           243: A null response means to use that type;
        !           244: otherwise, another type can be entered which will be used instead.
        !           245: Thus, in the above case, the user will be queried on a plugboard port
        !           246: as to whether they are actually using an
        !           247: .Ar adm3a  .
        !           248: .Pp
        !           249: If no mapping applies and a final
        !           250: .Ar type
        !           251: option, not preceded by a
        !           252: .Fl m  ,
        !           253: is given on the command line
        !           254: then that type is used;
        !           255: otherwise the type found in the
        !           256: .Xr ttys 5
        !           257: database will be taken to be the terminal type.
        !           258: This should always be the case for hardwired ports.
        !           259: .Pp
        !           260: It is usually desirable to return the terminal type, as finally determined by
        !           261: .Nm tset  ,
        !           262: and information about the terminal's capabilities
        !           263: to a shell's environment.  This can be done using the
        !           264: .Fl
        !           265: option; using the Bourne shell,
        !           266: .Xr sh  1  :
        !           267: .Pp
        !           268: .Df I
        !           269: .Li export TERM; TERM=\&\`tset \-
        !           270: .Ar options ...
        !           271: .Li \&\`
        !           272: .De
        !           273: .Pp
        !           274: or using the C shell,
        !           275: .Xr csh  1  :
        !           276: .Pp
        !           277: .Df I
        !           278: .Li setenv TERM \`tset \-
        !           279: .Ar options . . .
        !           280: .Li \&\`
        !           281: .De
        !           282: .Pp
        !           283: With
        !           284: .Xr csh 1
        !           285: it is preferable to use the following command in your .login file to
        !           286: initialize the
        !           287: .Ev TERM
        !           288: and
        !           289: .Ev TERMCAP
        !           290: environment variables at the same time.
        !           291: .Pp
        !           292: .Df I
        !           293: .Li eval \`tset -s
        !           294: .Ar options ...
        !           295: .Li \&\`
        !           296: .De
        !           297: .Pp
        !           298: It is also convenient to make an alias in your .cshrc:
        !           299: .Pp
        !           300: .Dl alias tset \'eval \`tset \-s \e!*\`\'
        !           301: .Pp
        !           302: This allows the command:
        !           303: .Pp
        !           304: .Dl tset 2621
        !           305: .Pp
        !           306: to be invoked at any time to set the terminal and environment.
        !           307: .Sy Note to Bourne Shell users:
        !           308: It is
        !           309: .Em not
        !           310: possible to get this aliasing effect with a shell script,
        !           311: because shell scripts cannot set the environment of their parent.
        !           312: (If a process could set its parent's environment,
        !           313: none of this nonsense would be necessary in the first place.)
        !           314: .Pp
        !           315: These commands cause
        !           316: .Nm tset
        !           317: to place the name of your terminal in the variable
        !           318: .Ev TERM
        !           319: in the environment; see
        !           320: .Xr environ  7  .
        !           321: .Pp
        !           322: Once the terminal type is known,
        !           323: .Nm tset
        !           324: engages in terminal driver mode setting.
        !           325: This normally involves sending an initialization sequence to the
        !           326: terminal, setting the single character erase (and optionally
        !           327: the line-kill (full line erase)) characters,
        !           328: and setting special character delays.
        !           329: Tab and newline expansion are turned off during transmission of
        !           330: the terminal initialization sequence.
        !           331: .Pp
        !           332: On terminals that can backspace but not overstrike
        !           333: (such as a
        !           334: .Em CRT ) ,
        !           335: and when the erase character is the default erase character
        !           336: (`#' on standard systems),
        !           337: the erase character is changed to
        !           338: .Li BACKSPACE
        !           339: (Control-H).
        !           340: .Pp
        !           341: If
        !           342: .Nm tset
        !           343: is invoked as
        !           344: .Nm reset  ,
        !           345: it will set cooked and echo modes, turn off cbreak and raw modes,
        !           346: turn on newline translation, and restore special characters
        !           347: to a sensible state before any terminal dependent processing is done.
        !           348: Any special character that is found to be
        !           349: .Li NULL
        !           350: or ``\-1'' is reset to its default value.  All arguments to
        !           351: .Nm tset
        !           352: may be used with reset.
        !           353: .Pp
        !           354: This is most useful after a program dies leaving a terminal in a funny
        !           355: state. You may have to type
        !           356: .Dq Li <LF>reset<LF>
        !           357: to get it to work
        !           358: since
        !           359: .Li <CR>
        !           360: may not work in this state. Often none of this will echo.
        !           361: .Sh EXAMPLES
        !           362: .Pp
        !           363: These examples all assume the Bourne shell and use the
        !           364: .Fl
        !           365: option.
        !           366: If you use
        !           367: .Xr csh  ,
        !           368: use one of the variations described above.
        !           369: Note that a typical use of
        !           370: .Nm tset
        !           371: in a
        !           372: .Pa .profile or
        !           373: .Pa .login
        !           374: will also use the
        !           375: .Fl e
        !           376: and
        !           377: .Fl k
        !           378: options, and often the
        !           379: .Fl n
        !           380: or
        !           381: .Fl Q
        !           382: options as well.
        !           383: These options have not been included here to keep the examples small.
        !           384: .Sy NOTE :
        !           385: some of the examples given here appear to take up more than
        !           386: one line, for text processing reasons.  When you type in real
        !           387: .Nm tset
        !           388: commands, you must enter them entirely on one line.
        !           389: .Pp
        !           390: At the moment, you are on a
        !           391: .Li 2621 .
        !           392: This is suitable for typing by hand but
        !           393: not for a
        !           394: .Pa .profile, unless you are
        !           395: .Em always
        !           396: on a 2621.
        !           397: .Pp
        !           398: .Dl export TERM; TERM=\`tset \- 2621\`
        !           399: .Pp
        !           400: You have an h19 at home which you dial up on, but your office terminal
        !           401: is hardwired and known in
        !           402: Xr ttys 5 .
        !           403: .Pp
        !           404: .Dl export 
        !           405: TERM; TERM=\`tset \- \-m dialup:h19\`
        !           406: .Pp
        !           407: You have a switch which connects everything to everything, making
        !           408: it nearly impossible to key on what port you are coming in on.
        !           409: You use a vt100 in your office at 9600 baud, and dial up to switch
        !           410: ports at 1200 baud from home on a 2621.
        !           411: Sometimes you use someone elses terminal at work,
        !           412: so you want it to ask you to make sure what terminal
        !           413: type you have at high speeds, but at 1200 baud you are
        !           414: always on a 2621.
        !           415: Note the placement of the question mark, and the quotes
        !           416: to protect the greater than and question mark from
        !           417: interpretation by the shell.
        !           418: .Pp
        !           419: .Df I
        !           420: .Li export TERM;
        !           421: .Li TERM=\`tset \- \-m 'switch>1200:?vt100'
        !           422: .Li \-m 'switch<=1200:2621'
        !           423: .De
        !           424: .Pp
        !           425: All of the above entries will fall back on the terminal type
        !           426: specified in
        !           427: .Xr ttys 5
        !           428: if none of the conditions hold.
        !           429: The following entry is appropriate if
        !           430: you always dial up, always at the same baud rate,
        !           431: on many different kinds of terminals.
        !           432: Your most common terminal is an adm3a.
        !           433: It always asks you what kind of terminal you are on,
        !           434: defaulting to adm3a.
        !           435: .Pp
        !           436: .Dl export TERM; TERM=\`tset \- \?adm3a\`
        !           437: .Pp
        !           438: If the file
        !           439: .Xr ttys 5
        !           440: is not properly installed and you want to
        !           441: key entirely on the baud rate, the following can be used:
        !           442: .Pp
        !           443: .Dl export TERM; TERM=\`tset \- \-m '>1200:vt100' 2621\`
        !           444: .Pp
        !           445: Here is a fancy example to illustrate the power of
        !           446: .Nm tset
        !           447: and to hopelessly confuse anyone who has made it this far.
        !           448: You dial up at 1200 baud or less on a concept100,
        !           449: sometimes over switch ports and sometimes over regular dialups.
        !           450: You use various terminals at speeds higher than 1200 over switch ports,
        !           451: most often the terminal in your office, which is a vt100.
        !           452: However, sometimes you log in from the university you used to go to,
        !           453: over the ARPANET; in this case you are on an ALTO emulating a dm2500.
        !           454: You also often log in on various hardwired ports, such as the console,
        !           455: all of which are properly entered in
        !           456: .Xr ttys 5 .
        !           457: You want your erase character set to control H,
        !           458: your kill character set to control U,
        !           459: and don't want
        !           460: .Nm tset
        !           461: to print the
        !           462: .Dq Li Erase set to Backspace ,
        !           463: .Dq Li Kill set to Control U
        !           464: message.
        !           465: .Pp
        !           466: .Df I
        !           467: .Li export TERM;
        !           468: .Li TERM=\`tset \-e \-k^U \-Q \-
        !           469: .Li \-m 'switch<=1200:concept100'
        !           470: .Li \-m 'switch:?vt100'
        !           471: .Li \-m dialup:concept100
        !           472: .Li \-m arpanet:dm2500\`
        !           473: .De
        !           474: .Sh ENVIRONMENT
        !           475: The
        !           476: .Nm tset
        !           477: command utilizes the
        !           478: .Ev TERM
        !           479: and
        !           480: .Ev TERMCAP
        !           481: environment variables.
        !           482: .Sh FILES
        !           483: .Dw /usr/share/misc/termcap
        !           484: .Di L
        !           485: .Dp Pa /etc/ttys
        !           486: port name to terminal type mapping database
        !           487: .Dp Pa /usr/share/misc/termcap
        !           488: terminal capability database
        !           489: .Dp
        !           490: .Sh SEE ALSO
        !           491: .Xr csh 1 ,
        !           492: .Xr sh 1 ,
        !           493: .Xr stty 1 ,
        !           494: .Xr ttys 5 ,
        !           495: .Xr termcap 5 ,
        !           496: .Xr environ 7
        !           497: .Sh HISTORY
        !           498: .Nm Tset
        !           499: appeared in 3 BSD.
        !           500: .Sh BUGS
        !           501: .Pp
        !           502: The
        !           503: .Nm tset
        !           504: command is one of the first commands a user must master when getting
        !           505: started on a UNIX system.
        !           506: Unfortunately, it is one of the most complex,
        !           507: largely because of the extra effort the user must go through
        !           508: to get the environment of the login shell set.
        !           509: Something needs to be done to make all this simpler,
        !           510: either the
        !           511: .Xr login  1
        !           512: program should do this stuff,
        !           513: or a default shell alias should be made,
        !           514: or a way to set the environment of the parent should exist.
        !           515: .Pp
        !           516: This program can't intuit personal choices for erase, interrupt
        !           517: and line kill characters, so it leaves these set to the local system
        !           518: standards.
        !           519: .ig
        !           520: .Sh NOTES
        !           521: For compatibility with earlier versions of
        !           522: .Nm tset
        !           523: a number of flags are accepted whose use is discouraged:
        !           524: .Tw Fl
        !           525: .Tp Cx Fl d
        !           526: .Ar type
        !           527: .Cx
        !           528: equivalent to
        !           529: .Fl m
        !           530: .Ar dialup:type
        !           531: .Tp Cx Fl p
        !           532: .Ar type
        !           533: .Cx
        !           534: equivalent to
        !           535: .Fl m
        !           536: .Ar plugboard:type
        !           537: .Tp Cx Fl a
        !           538: .Ar type
        !           539: .Cx
        !           540: equivalent to
        !           541: .Fl m
        !           542: .Ar arpanet:type
        !           543: .Cx
        !           544: .Tp Cx Fl E
        !           545: .Ar c
        !           546: .Cx
        !           547: Sets the erase character to
        !           548: .Ar c
        !           549: only if the terminal can backspace.
        !           550: .Tp Fl
        !           551: prints the terminal type on the standard output
        !           552: .Tp Fl r
        !           553: prints the terminal type on the diagnostic output.
        !           554: .Tp
        !           555: ..

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.