|
|
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: ..
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.