|
|
1.1 ! root 1: .TH TSET 1 "16 October 1982" ! 2: .UC 4 ! 3: .\" @(#)tset.1 1.2 ! 4: .SH NAME ! 5: tset \- terminal dependent initialization ! 6: .SH SYNOPSIS ! 7: .B tset ! 8: [ options ] [ ! 9: .B \-m ! 10: [ident][test baudrate]:type ] \&... [ type ] ! 11: .sp 1 ! 12: .B reset ! 13: \&... ! 14: .SH DESCRIPTION ! 15: .I Tset ! 16: sets up your terminal when you first log in to a UNIX system. ! 17: It does terminal dependent processing such as setting ! 18: erase and kill characters, setting or resetting delays, ! 19: sending any sequences needed to properly initialized the terminal, ! 20: and the like. ! 21: It first determines the ! 22: .I type ! 23: of terminal involved, ! 24: and then does necessary initializations and mode settings. ! 25: The type of terminal attached to each \s-2UNIX\s0 port is specified in the ! 26: .I /etc/ttytype ! 27: database. ! 28: Type names for terminals may be found in the ! 29: .IR termcap (5) ! 30: database. ! 31: If a port is not wired permanently to a specific terminal (not hardwired) ! 32: it will be given an appropriate generic identifier such as ! 33: .IR dialup . ! 34: .PP ! 35: In the case where no arguments are specified, ! 36: .I tset ! 37: simply reads the terminal type out of the environment variable TERM ! 38: and re-initializes the terminal. The rest of this manual concerns ! 39: itself with mode and environment initialization, ! 40: typically done once at login, and options ! 41: used at initialization time to determine the terminal type and set up ! 42: terminal modes. ! 43: .PP ! 44: When used in a startup script (\fI\&.profile\fR for ! 45: .IR sh (1) ! 46: users or ! 47: .I \&.login ! 48: for ! 49: .IR csh (1) ! 50: users) it is desirable to give information about the type of terminal ! 51: you will usually use on ports which are not hardwired. ! 52: These ports are identified in ! 53: .I /etc/ttytype ! 54: as ! 55: .I dialup ! 56: or ! 57: .I plugboard ! 58: or ! 59: .I arpanet, ! 60: etc. ! 61: To specify ! 62: what terminal type you usually use on these ports, the ! 63: .B \-m ! 64: (map) option flag is followed by the appropriate port type identifier, ! 65: an optional baud rate specification, ! 66: and the terminal type. ! 67: (The effect is to ``map'' from some conditions to a terminal type, ! 68: that is, to tell ! 69: .I tset ! 70: ``If I'm on this kind of port, guess that I'm on that kind of terminal''.) ! 71: If more than one mapping is specified, the first applicable mapping prevails. ! 72: A missing port type identifier matches all identifiers. ! 73: Any of the alternate generic names given in ! 74: .I termcap ! 75: may be used for the identifier. ! 76: .PP ! 77: A ! 78: .I baudrate ! 79: is specified as with ! 80: .IR stty (1), ! 81: and is compared with the ! 82: speed of the diagnostic output (which should be the control terminal). ! 83: The baud rate ! 84: .I test ! 85: may be any combination of: ! 86: .BR > , ! 87: .BR @ , ! 88: .BR < , ! 89: and ! 90: .BR ! ; ! 91: .B @ ! 92: means ``at'' ! 93: and ! 94: .B ! ! 95: inverts the sense of the test. To avoid problems with metacharacters, it ! 96: is best to place the entire argument to ! 97: .B \-m ! 98: within ``\''' characters; users of ! 99: .IR csh (1) ! 100: must also put a ``\e'' before any ``!'' used here. ! 101: .PP ! 102: .KS ! 103: Thus ! 104: .IP ! 105: tset \-m \'dialup>300:adm3a\' -m dialup:dw2 -m \'plugboard:?adm3a\' ! 106: .KE ! 107: .LP ! 108: causes the terminal type to be set to an ! 109: .I adm3a ! 110: if the port in use is a dialup at a speed greater than 300 baud; ! 111: to a ! 112: .I dw2 ! 113: if the port is (otherwise) a dialup (i.e. at 300 baud or less). ! 114: (\fBNOTE:\fP the examples given here appear to take up more than ! 115: one line, for text processing reasons. When you type in real ! 116: .I tset ! 117: commands, you must enter them entirely on one line.) ! 118: If the ! 119: .I type ! 120: finally determined by ! 121: .I tset ! 122: begins with a question mark, ! 123: the user is asked if s/he really wants that type. ! 124: A null response means to use that type; ! 125: otherwise, another type can be entered which will be used instead. ! 126: Thus, in the above case, the user will be queried on a plugboard port ! 127: as to whether they are actually using an ! 128: .IR adm3a . ! 129: .PP ! 130: If no mapping applies and a final ! 131: .I type ! 132: option, not preceded by a ! 133: .BR \-m , ! 134: is given on the command line ! 135: then that type is used; ! 136: otherwise the identifier found in the ! 137: .I /etc/ttytype ! 138: database will be taken to be the terminal type. ! 139: This should always be the case for hardwired ports. ! 140: .PP ! 141: It is usually desirable to return the terminal type, as finally determined by ! 142: .IR tset , ! 143: and information about the terminal's capabilities ! 144: to a shell's environment. This can be done using the ! 145: .B \- ! 146: option; using the Bourne shell, ! 147: .IR sh (1): ! 148: .IP ! 149: export TERM; TERM=\`tset \- \fIoptions...\fR\` ! 150: .LP ! 151: or using the C shell, ! 152: .IR csh (1): ! 153: .IP ! 154: setenv TERM \`tset - \fIoptions...\fR\` ! 155: .PP ! 156: With ! 157: .I csh ! 158: it is convenient to make an alias in your .cshrc: ! 159: .PP ! 160: .RS ! 161: alias tset \'setenv TERM \`tset \- \e!*\`\' ! 162: .RE ! 163: Either of these aliases allow the command ! 164: .RS ! 165: tset 2621 ! 166: .RE ! 167: to be invoked at any time from your login csh. ! 168: .B "Note to Bourne Shell users:" ! 169: It is ! 170: .B not ! 171: possible to get this aliasing effect with a shell script, ! 172: because shell scripts cannot set the environment of their parent. ! 173: (If a process could set its parent's environment, ! 174: none of this nonsense would be necessary in the first place.) ! 175: .PP ! 176: These commands cause ! 177: .I tset ! 178: to place the name of your terminal in the variable ! 179: TERM in the environment; see ! 180: .IR environ (7). ! 181: .PP ! 182: Once the terminal type is known, ! 183: .I tset ! 184: engages in terminal driver mode setting. ! 185: This normally involves sending an initialization sequence to the ! 186: terminal, setting the single character erase (and optionally ! 187: the line-kill (full line erase)) characters, ! 188: and setting special character delays. ! 189: Tab and newline expansion are turned off during transmission of ! 190: the terminal initialization sequence. ! 191: .PP ! 192: On terminals that can backspace but not overstrike ! 193: (such as a \s-2CRT\s0), ! 194: and when the erase character is the default erase character ! 195: (`#' on standard systems), ! 196: the erase character is changed to \s-2BACKSPACE\s0 (Control-H). ! 197: .PP ! 198: The options are: ! 199: .TP ! 200: .B \-e\fIc ! 201: set the erase character to be the named character ! 202: .I c ! 203: on all terminals, ! 204: the default being the backspace character on the terminal, usually ^H. ! 205: The character ! 206: .I c ! 207: can either be typed directly, or entered using the hat ! 208: notation used here. ! 209: .TP ! 210: .B \-k\fIc ! 211: is similar to ! 212: .B \-e ! 213: but for the line kill character rather than the erase character; ! 214: .I c ! 215: defaults to ^X (for purely historical reasons). ! 216: The kill characters is left alone if ! 217: .B \-k ! 218: is not specified. ! 219: The hat notation can also be used for this option. ! 220: .TP ! 221: .B \- ! 222: The name of the terminal finally decided upon is output on the ! 223: standard output. ! 224: This is intended to be captured by the shell and placed in the ! 225: environment variable TERM. ! 226: .TP ! 227: .B \-n ! 228: On systems with the Berkeley 4BSD tty driver, ! 229: specifies that the new tty driver modes should be initialized for this terminal. ! 230: For a \s-2CRT\s0, ! 231: the CRTERASE and CRTKILL ! 232: modes are set only if the baud rate is 1200 or greater. ! 233: See tty(4) for more detail. ! 234: .TP ! 235: .B \-I ! 236: suppresses transmitting terminal initialization strings. ! 237: .TP ! 238: .B \-Q ! 239: suppresses printing the ! 240: ``Erase set to'' and ``Kill set to'' messages. ! 241: .PP ! 242: If ! 243: .B tset ! 244: is invoked as ! 245: .BR reset , ! 246: it will set cooked and echo modes, turn off cbreak and raw modes, ! 247: turn on newline translation, and restore special characters ! 248: to a sensible state before any terminal dependent processing is done. ! 249: Any special character that is found to be \s-2NULL\s0 ! 250: or ``\-1'' is reset to its default value. ! 251: .PP ! 252: This is most useful after a program dies leaving a terminal in a funny ! 253: state. You may have to type ``\s-2<LF>\s0reset\s-2<LF>\s0'' to get it to work ! 254: since \s-2<CR>\s0 may not work in this state. Often none of this will echo. ! 255: .SH EXAMPLES ! 256: .PP ! 257: These examples all assume the Bourne shell and use the - option. ! 258: If you use ! 259: .IR csh , ! 260: use one of the variations described above. ! 261: Note that a typical use of ! 262: .I tset ! 263: in a .profile or .login will also use the ! 264: .B \-e ! 265: and ! 266: .B \-k ! 267: options, and often the ! 268: .B \-n ! 269: or ! 270: .B \-Q ! 271: options as well. ! 272: These options have not been included here to keep the examples small. ! 273: (\fBNOTE:\fP some of the examples given here appear to take up more than ! 274: one line, for text processing reasons. When you type in real ! 275: .I tset ! 276: commands, you must enter them entirely on one line.) ! 277: .PP ! 278: At the moment, you are on a 2621. ! 279: This is suitable for typing by hand but ! 280: not for a .profile, unless you are ! 281: .I always ! 282: on a 2621. ! 283: .IP ! 284: export TERM; TERM=\`tset \- 2621\` ! 285: .PP ! 286: You have an h19 at home which you dial up on, but your office terminal ! 287: is hardwired and known in /etc/ttytype. ! 288: .IP ! 289: export TERM; TERM=\`tset \- \-m dialup:h19\` ! 290: .PP ! 291: You have a switch which connects everything to everything, making ! 292: it nearly impossible to key on what port you are coming in on. ! 293: You use a vt100 in your office at 9600 baud, and dial up to switch ! 294: ports at 1200 baud from home on a 2621. ! 295: Sometimes you use someone elses terminal at work, ! 296: so you want it to ask you to make sure what terminal ! 297: type you have at high speeds, but at 1200 baud you are ! 298: always on a 2621. ! 299: Note the placement of the question mark, and the quotes ! 300: to protect the greater than and question mark from ! 301: interpretation by the shell. ! 302: .IP ! 303: export TERM; TERM=\`tset \- \-m 'switch>1200:?vt100' \-m 'switch<=1200:2621' ! 304: .PP ! 305: All of the above entries will fall back on the terminal type ! 306: specified in ! 307: .I /etc/ttytype ! 308: if none of the conditions hold. ! 309: The following entry is appropriate if ! 310: you always dial up, always at the same baud rate, ! 311: on many different kinds of terminals. ! 312: Your most common terminal is an adm3a. ! 313: It always asks you what kind of terminal you are on, ! 314: defaulting to adm3a. ! 315: .IP ! 316: export TERM; TERM=\`tset \- \?adm3a\` ! 317: .PP ! 318: If the file ! 319: .I /etc/ttytype ! 320: is not properly installed and you want to ! 321: key entirely on the baud rate, the following can be used: ! 322: .IP ! 323: export TERM; TERM=\`tset \- \-m '>1200:vt100' 2621\` ! 324: .PP ! 325: Here is a fancy example to illustrate the power of ! 326: .I tset ! 327: and to hopelessly confuse anyone who has made it this far. ! 328: You dial up at 1200 baud or less on a concept100, ! 329: sometimes over switch ports and sometimes over regular dialups. ! 330: You use various terminals at speeds higher than 1200 over switch ports, ! 331: most often the terminal in your office, which is a vt100. ! 332: However, sometimes you log in from the university you used to go to, ! 333: over the ARPANET; in this case you are on an ALTO emulating a dm2500. ! 334: You also often log in on various hardwired ports, such as the console, ! 335: all of which are properly entered in ! 336: .IR /etc/ttytype . ! 337: You want your erase character set to control H, ! 338: your kill character set to control U, ! 339: and don't want ! 340: .I tset ! 341: to print the ``Erase set to Backspace, Kill set to Control U'' message. ! 342: .IP ! 343: export TERM; TERM=\`tset \-e \-k^U \-Q \- \-m 'switch<=1200:concept100' \-m 'switch:?vt100' \-m dialup:concept100 \-m arpanet:dm2500\` ! 344: .SH FILES ! 345: .DT ! 346: /etc/ttytype port name to terminal type mapping database ! 347: .br ! 348: /etc/termcap terminal capability database ! 349: .SH SEE\ ALSO ! 350: csh(1), sh(1), stty(1), ttytype(5), termcap(5), environ(7) ! 351: .SH AUTHORS ! 352: Eric Allman ! 353: .br ! 354: David Wasley ! 355: .br ! 356: Mark Horton ! 357: .SH BUGS ! 358: .PP ! 359: The ! 360: .I tset ! 361: command is one of the first commands a user must master when getting ! 362: started on a UNIX system. ! 363: Unfortunately, it is one of the most complex, ! 364: largely because of the extra effort the user must go through ! 365: to get the environment of the login shell set. ! 366: Something needs to be done to make all this simpler, ! 367: either the ! 368: .IR login (1) ! 369: program should do this stuff, ! 370: or a default shell alias should be made, ! 371: or a way to set the environment of the parent should exist. ! 372: .ig ! 373: .SH NOTES ! 374: For compatibility with earlier versions of ! 375: .I tset ! 376: a number of flags are accepted whose use is discouraged: ! 377: .TP 10 ! 378: \fB\-d\fR type ! 379: equivalent to ! 380: .B \-m ! 381: dialup:type ! 382: .TP 10 ! 383: \fB\-p\fR type ! 384: equivalent to ! 385: .B \-m ! 386: plugboard:type ! 387: .TP 10 ! 388: \fB\-a\fR type ! 389: equivalent to ! 390: .B \-m ! 391: arpanet:type ! 392: .TP 10 ! 393: \fB\-E\fR c ! 394: Sets the erase character to ! 395: .I c ! 396: only if the terminal can backspace. ! 397: .TP 10 ! 398: \fB\-\fR ! 399: prints the terminal type on the standard output ! 400: .TP 10 ! 401: \fB\-r\fR ! 402: prints the terminal type on the diagnostic output. ! 403: ..
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.