|
|
1.1 ! root 1: .\" @(#)sh.1 6.3 (Berkeley) 5/5/86 ! 2: .\" ! 3: .TH SH 1 "May 5, 1986" ! 4: .AT 3 ! 5: .SH NAME ! 6: sh, for, case, if, while, \fB:\fP, \fB.\fP, break, continue, cd, eval, exec, exit, export, login, read, readonly, set, shift, times, trap, umask, wait \- command language ! 7: .SH SYNOPSIS ! 8: .B sh ! 9: [ ! 10: .B \-ceiknrstuvx ! 11: ] [ arg ] ... ! 12: .ds OK [\| ! 13: .ds CK \|] ! 14: .ds LT \s-2<\s0 ! 15: .ds GT \s-2>\s0 ! 16: .ds LE \s-2<\s0 ! 17: .ds ST * ! 18: .SH DESCRIPTION ! 19: .I Sh ! 20: is a command programming language that executes commands read from a terminal ! 21: or a file. See ! 22: .B invocation ! 23: for the meaning of arguments to the shell. ! 24: .PP ! 25: .B Commands. ! 26: .br ! 27: A ! 28: .I simple-command ! 29: is a sequence of non blank ! 30: .I words ! 31: separated by blanks (a blank is a ! 32: .B tab ! 33: or a ! 34: .BR space ). ! 35: The first word specifies the name of the command to be executed. ! 36: Except as specified below the remaining words are passed as arguments ! 37: to the invoked command. ! 38: The command name is passed as argument 0 (see ! 39: .IR execve (2)). ! 40: The ! 41: .I value ! 42: of a simple-command is its exit status ! 43: if it terminates normally or 200+\fIstatus\fP if it terminates abnormally (see ! 44: .IR sigvec (2) ! 45: for a list of status values). ! 46: .LP ! 47: A ! 48: .I pipeline ! 49: is a sequence of one or more ! 50: .I commands ! 51: separated by ! 52: .B \(or. ! 53: The standard output of each command but the last is connected by a ! 54: .IR pipe (2) ! 55: to the standard input of the next command. ! 56: Each command is run as a separate process; ! 57: the shell waits for the last command to terminate. ! 58: .LP ! 59: A ! 60: .I list ! 61: is a sequence of one or more ! 62: .I pipelines ! 63: separated by ! 64: .BR ; , ! 65: .BR & , ! 66: .B && ! 67: or ! 68: .B \(or\|\(or ! 69: and optionally terminated by ! 70: .B ; ! 71: or ! 72: .BR & . ! 73: .B ; ! 74: and ! 75: .B & ! 76: have equal precedence which is lower than that of ! 77: .B && ! 78: and ! 79: .BR \(or\|\(or , ! 80: .B && ! 81: and ! 82: .B \(or\|\(or ! 83: also have equal precedence. ! 84: A semicolon causes sequential execution; an ampersand causes the preceding ! 85: .I pipeline ! 86: to be executed without waiting for it to finish. The symbol ! 87: .B && ! 88: .RB ( \(or\|\(or ) ! 89: causes the ! 90: .I list ! 91: following to be executed only if the preceding ! 92: .I pipeline ! 93: returns a zero (non zero) value. Newlines may appear in a ! 94: .I list, ! 95: instead of semicolons, to delimit commands. ! 96: .LP ! 97: A ! 98: .I command ! 99: is either a simple-command or one of the following. ! 100: The value returned by a command is that of the ! 101: last simple-command executed in the command. ! 102: .TP ! 103: \fBfor \fIname\fR \*(OK\fBin \fIword\fR ...\*(CK \fBdo \fIlist \fBdone\fR ! 104: Each time a ! 105: .B for ! 106: command is executed ! 107: .I name ! 108: is set to the next word in the ! 109: .B for ! 110: word list. ! 111: If ! 112: .BI in \ word ! 113: \&... ! 114: is omitted, ! 115: .B ! 116: in "$@" ! 117: is assumed. Execution ends when there are no more words in the list. ! 118: .TP ! 119: \fBcase \fIword \fBin\fR \*(OK\fIpattern \fR\*(OK \fB\(or \fIpattern \fR\*(CK ... \fB) \fIlist \fB;;\fR\*(CK ... \fBesac\fR ! 120: A ! 121: .B case ! 122: command executes the ! 123: .I list ! 124: associated with the first pattern that matches ! 125: .I word. ! 126: The form of the patterns is the same as that used for file name generation. ! 127: .TP ! 128: \fBif \fIlist \fBthen \fIlist\fR \*(OK\fBelif \fIlist \fBthen \fIlist\fR\*(CK ... \*(OK\fBelse \fIlist\fR\*(CK \fBfi\fR ! 129: The ! 130: .I list ! 131: following ! 132: .B if ! 133: is executed and if it returns zero the ! 134: .I list ! 135: following ! 136: .B then ! 137: is executed. Otherwise, the ! 138: .I list ! 139: following ! 140: .B elif ! 141: is executed and if its value is zero the ! 142: .I list ! 143: following ! 144: .B then ! 145: is executed. Failing that the ! 146: .B else ! 147: .I list ! 148: is executed. ! 149: .TP ! 150: \fBwhile \fIlist\fR \*(OK\fBdo \fIlist\fR\*(CK \fBdone\fR ! 151: A ! 152: .B while ! 153: command repeatedly executes the ! 154: .B while ! 155: .I list ! 156: and if its value is zero executes the ! 157: .B do ! 158: .I list; ! 159: otherwise the loop terminates. The value returned by a ! 160: .B while ! 161: command is that of the last executed command in the ! 162: .B do ! 163: .I list. ! 164: .B until ! 165: may be used in place of ! 166: .B while ! 167: to negate the loop termination test. ! 168: .TP ! 169: .BI ( " list " ) ! 170: Execute ! 171: .I list ! 172: in a subshell. ! 173: .TP ! 174: .BI { " list " } ! 175: .I list ! 176: is simply executed. ! 177: .LP ! 178: The following words are only recognized as the first word of a command ! 179: and when not quoted. ! 180: .IP ! 181: .B ! 182: if then else elif fi case in esac for while until do done { } ! 183: .PP ! 184: .B Command substitution. ! 185: .br ! 186: The standard output from a command enclosed in a pair of back quotes ! 187: .RB ( \`\|\` ) ! 188: may be used as part or all of a word; trailing newlines are removed. ! 189: .PP ! 190: .B Parameter substitution. ! 191: .br ! 192: The character ! 193: .B $ ! 194: is used to introduce substitutable parameters. ! 195: Positional parameters may be assigned values by ! 196: .BR set . ! 197: Variables may be set by writing ! 198: .IP ! 199: .IB name = value ! 200: [ ! 201: .IB name = value ! 202: ] ... ! 203: .TP ! 204: $\fB\|{\fIparameter\fB\|}\fR ! 205: A ! 206: .I parameter ! 207: is a sequence of letters, digits or underscores (a ! 208: .IR name ), ! 209: a digit, or any of the characters ! 210: .B ! 211: * @ # ? \- $ !\|. ! 212: The value, if any, of the parameter is substituted. ! 213: The braces are required only when ! 214: .I parameter ! 215: is followed by a letter, digit, or underscore ! 216: that is not to be interpreted as part of its name. If ! 217: .I parameter ! 218: is a digit, it is a positional parameter. If ! 219: .I parameter ! 220: is ! 221: .BR * " or" " @" ! 222: then all the positional parameters, starting with ! 223: .SM ! 224: .BR $1 , ! 225: are substituted separated by spaces. ! 226: .SM ! 227: .B $0 ! 228: is set from argument zero when the shell is invoked. ! 229: .TP ! 230: $\fB\|{\fIparameter\|\-word\|\fB}\fR ! 231: If ! 232: .I parameter ! 233: is set, substitute its value; otherwise substitute ! 234: .I word. ! 235: .TP ! 236: $\fB\|{\fIparameter\|\(eq\|word\|\fB}\fR ! 237: If ! 238: .I parameter ! 239: is not set, set it to ! 240: .I word; ! 241: the value of the parameter is then substituted. ! 242: Positional parameters may not be assigned to in this way. ! 243: .TP ! 244: $\fB\|{\fIparameter\|?\|word\|\fB}\fR ! 245: If ! 246: .I parameter ! 247: is set, substitute its value; otherwise, print ! 248: .I word ! 249: and exit from the shell. If ! 250: .I word ! 251: is omitted, a standard message is printed. ! 252: .TP ! 253: $\fB\|{\fIparameter\|\(plword\|\fB}\fR ! 254: If ! 255: .I parameter ! 256: is set, substitute ! 257: .I word; ! 258: otherwise substitute nothing. ! 259: .LP ! 260: In the above ! 261: .I word ! 262: is not evaluated unless it is to be used as the substituted string. ! 263: (So that, for example, echo ${d\-\'pwd\'} will only execute ! 264: .I pwd ! 265: if ! 266: .I d ! 267: is unset.) ! 268: .LP ! 269: The following ! 270: .I parameters ! 271: are automatically set by the shell. ! 272: .RS ! 273: .TP ! 274: .B # ! 275: The number of positional parameters in decimal. ! 276: .PD 0 ! 277: .TP ! 278: .B \- ! 279: Options supplied to the shell on invocation or by ! 280: .BR set . ! 281: .TP ! 282: .B ? ! 283: The value returned by the last executed command in decimal. ! 284: .TP ! 285: .B $ ! 286: The process number of this shell. ! 287: .TP ! 288: .B ! ! 289: The process number of the last background command invoked. ! 290: .PD ! 291: .RE ! 292: .LP ! 293: The following ! 294: .I parameters ! 295: are used but not set by the shell. ! 296: .RS ! 297: .TP ! 298: .B ! 299: .SM HOME ! 300: The default argument (home directory) for the ! 301: .B cd ! 302: command. ! 303: .PD 0 ! 304: .TP ! 305: .B ! 306: .SM PATH ! 307: The search path for commands (see ! 308: .BR execution ). ! 309: .TP ! 310: .B ! 311: .SM MAIL ! 312: If this variable is set to the name of ! 313: a mail file, the shell informs the user of ! 314: the arrival of mail in the specified file. ! 315: .SM ! 316: .TP ! 317: .B PS1 ! 318: Primary prompt string, by default '$ '. ! 319: .TP ! 320: .SM ! 321: .B PS2 ! 322: Secondary prompt string, by default '> '. ! 323: .TP ! 324: .SM ! 325: .B IFS ! 326: Internal field separators, normally ! 327: .BR space , ! 328: .BR tab , ! 329: and ! 330: .BR newline . ! 331: .B IFS ! 332: is ignored if ! 333: .I sh ! 334: is running as root or if the effective user id differs from the real user id. ! 335: .PD ! 336: .RE ! 337: .PP ! 338: .B Blank interpretation. ! 339: .br ! 340: After parameter and command substitution, ! 341: any results of substitution are scanned for internal field separator ! 342: characters (those found in ! 343: .SM ! 344: .BR $IFS \*S) ! 345: and split into distinct arguments where such characters are found. ! 346: Explicit null arguments ("" or \'\') are retained. ! 347: Implicit null arguments (those resulting from ! 348: .I parameters ! 349: that have no values) are removed. ! 350: .PP ! 351: .B File name generation. ! 352: .br ! 353: Following substitution, each command word is scanned for the characters ! 354: .BR * , ! 355: .B ? ! 356: and ! 357: .B \*(OK. ! 358: If one of these characters appears, the word is regarded as a pattern. ! 359: The word is replaced with alphabetically sorted file names that match the ! 360: pattern. If no file name is found that matches the pattern, ! 361: the word is left unchanged. The character ! 362: .B . ! 363: at the start of a file name or immediately following a ! 364: .BR / , ! 365: and the character ! 366: .BR / , ! 367: must be matched explicitly. ! 368: .TP ! 369: .B \*(ST ! 370: Matches any string, including the null string. ! 371: .PD 0 ! 372: .TP ! 373: .B ? ! 374: Matches any single character. ! 375: .TP ! 376: .B \*(OK...\*(CK ! 377: Matches any one of the characters enclosed. ! 378: A pair of characters separated by ! 379: .B \- ! 380: matches any character lexically between the pair. ! 381: .PD ! 382: .PP ! 383: .B Quoting. ! 384: .br ! 385: The following characters have a special meaning to the shell ! 386: and cause termination of a word unless quoted. ! 387: .LP ! 388: \fB; & ( ) \(or \*(LT \*(GT newline space tab\fP ! 389: .LP ! 390: A character may be ! 391: .I quoted ! 392: by preceding it with a ! 393: .B ! 394: \\\|. ! 395: .B \\\\newline ! 396: is ignored. ! 397: All characters enclosed between a pair of quote marks (\fB\'\|\'\fP), ! 398: except a single quote, are quoted. Inside double quotes (\fB"\|"\fP) ! 399: parameter and command substitution occurs and ! 400: .B ! 401: \\ ! 402: quotes the characters ! 403: .B ! 404: \\ \' " ! 405: and ! 406: .BR $ \|. ! 407: .LP ! 408: .B ! 409: "$*" ! 410: is equivalent to ! 411: .SM ! 412: .B ! 413: "$1 $2 ..." ! 414: whereas ! 415: .br ! 416: .B ! 417: "$@" ! 418: is equivalent to ! 419: .SM ! 420: .B ! 421: "$1" "$2" ... . ! 422: .PP ! 423: .B Prompting. ! 424: .br ! 425: When used interactively, the shell prompts with the value of ! 426: .SM ! 427: PS1 ! 428: before reading a command. ! 429: If at any time a newline is typed and further input is needed ! 430: to complete a command, the secondary prompt ! 431: .RB ( \s-2$PS2\s0 ) ! 432: is issued. ! 433: .PP ! 434: .B Input output. ! 435: .br ! 436: Before a command is executed its input and output ! 437: may be redirected using a special notation interpreted by the shell. ! 438: The following may appear anywhere in a simple-command ! 439: or may precede or follow a ! 440: .I command ! 441: and are not passed on to the invoked command. ! 442: Substitution occurs before ! 443: .I word ! 444: or ! 445: .I digit ! 446: is used. ! 447: .TP ! 448: \*(LT\fI\|word\fP ! 449: Use file ! 450: .I word ! 451: as standard input (file descriptor 0). ! 452: .PD ! 453: .TP ! 454: \*(GT\fI\|word\fP ! 455: Use file ! 456: .I word ! 457: as standard output (file descriptor 1). ! 458: If the file does not exist, it is created; ! 459: otherwise it is truncated to zero length. ! 460: .TP ! 461: \*(GT\*(GT\fI\|word\fP ! 462: Use file ! 463: .I word ! 464: as standard output. ! 465: If the file exists, output is appended (by seeking to the end); ! 466: otherwise the file is created. ! 467: .TP ! 468: \*(LT\*(LT\fI\|word\fP ! 469: The shell input is read up to a line the same as ! 470: .IR word , ! 471: or end of file. ! 472: The resulting document becomes the standard input. ! 473: If any character of ! 474: .I word ! 475: is quoted, no interpretation is placed upon the characters of the document; ! 476: otherwise, parameter and command substitution occurs, ! 477: .B ! 478: \\newline ! 479: is ignored, and ! 480: .B ! 481: \\ ! 482: is used to quote the characters ! 483: .B ! 484: \\ $ \' ! 485: and the first character of ! 486: .I word. ! 487: .TP ! 488: \*(LT\|&\|\fIdigit\fP ! 489: The standard input is duplicated from file descriptor ! 490: .I digit; ! 491: see ! 492: .IR dup (2). ! 493: Similarly for the standard output using \*(GT\|. ! 494: .TP ! 495: \*(LT\|&\|\- ! 496: The standard input is closed. ! 497: Similarly for the standard output using \*(GT\|. ! 498: .PD ! 499: .LP ! 500: If one of the above is preceded by a digit, the ! 501: file descriptor created is that specified by the digit ! 502: (instead of the default 0 or 1). For example, ! 503: .LP ! 504: \&... 2\*(GT&1 ! 505: .LP ! 506: creates file descriptor 2 to be a duplicate ! 507: of file descriptor 1. ! 508: .LP ! 509: If a command is followed by ! 510: .B & ! 511: then the default standard input for the command is the empty file ! 512: (/dev/null). ! 513: Otherwise, the environment for the execution of a command contains the ! 514: file descriptors of the invoking shell as modified by input ! 515: output specifications. ! 516: .PP ! 517: .B Environment. ! 518: .br ! 519: The environment is a list of name-value pairs that is passed to ! 520: an executed program in the same way as a normal argument list; see ! 521: .IR execve (2) ! 522: and ! 523: .IR environ (7). ! 524: The shell interacts with the environment in several ways. ! 525: On invocation, the shell scans the environment and creates a ! 526: .I parameter ! 527: for each name found, giving it the corresponding value. ! 528: Executed commands inherit the same environment. ! 529: If the user modifies the values of these ! 530: .I parameters ! 531: or creates new ones, none of these affects the environment unless the ! 532: .B export ! 533: command is used to bind the shell's ! 534: .I parameter ! 535: to the environment. ! 536: The environment seen by any executed command is thus composed ! 537: of any unmodified name-value pairs originally inherited by the shell, ! 538: plus any modifications or additions, all of which must be noted in ! 539: .B export ! 540: commands. ! 541: .LP ! 542: The environment for any ! 543: .I simple-command ! 544: may be augmented by prefixing it with one or more assignments to ! 545: .I parameters. ! 546: Thus these two lines are equivalent ! 547: .IP ! 548: TERM=450 cmd args ! 549: .br ! 550: (export TERM; TERM=450; cmd args) ! 551: .LP ! 552: If the ! 553: .B \-k ! 554: flag is set, ! 555: .I all ! 556: keyword arguments are placed in the environment, ! 557: even if the occur after the command name. ! 558: The following prints 'a=b c' and 'c': ! 559: .nf ! 560: echo a=b c ! 561: set \-k ! 562: echo a=b c ! 563: .fi ! 564: .PP ! 565: .B Signals. ! 566: .br ! 567: The INTERRUPT and QUIT signals for an invoked ! 568: command are ignored if the command is followed by ! 569: .BR & ; ! 570: otherwise signals have the values inherited by the shell from its parent. ! 571: (But see also ! 572: .BR trap. ) ! 573: .PP ! 574: .B Execution. ! 575: .br ! 576: Each time a command is executed the above substitutions are carried out. ! 577: Except for the 'special commands' listed below a new process is created and ! 578: an attempt is made to execute the command via an ! 579: .IR execve (2). ! 580: .LP ! 581: The shell parameter ! 582: .B ! 583: .SM $PATH ! 584: defines the search path for the directory containing the command. ! 585: Each alternative directory name is separated by a colon ! 586: .RB ( : ). ! 587: The default path is ! 588: .BR :/bin:/usr/bin . ! 589: If the command name contains a /, the search path is not used. ! 590: Otherwise, each directory in the path is searched for an executable file. ! 591: If the file has execute permission but is not an ! 592: .I a.out ! 593: file, it is assumed to be a file containing shell commands. ! 594: A subshell (i.e., a separate process) is spawned to read it. ! 595: A parenthesized command is also executed in a subshell. ! 596: .PP ! 597: .B Special commands. ! 598: .br ! 599: The following commands are executed in the shell process ! 600: and except where specified ! 601: no input output redirection is permitted for such commands. ! 602: .TP ! 603: .B # ! 604: For non-interactive shells, everything following the ! 605: .B # ! 606: is treated as a comment, i.e. the rest of the line is ignored. ! 607: For interactive shells, the ! 608: .B # ! 609: has no special effect. ! 610: .TP ! 611: .B : ! 612: No effect; the command does nothing. ! 613: .PD 0 ! 614: .TP ! 615: .BI . \ file ! 616: Read and execute commands from ! 617: .I file ! 618: and return. The search path ! 619: .B ! 620: .SM $PATH ! 621: is used to find the directory containing ! 622: .IR file . ! 623: .TP ! 624: \fBbreak\fR \*(OK\fIn\fR\*(CK ! 625: Exit from the enclosing ! 626: .B for ! 627: or ! 628: .B while ! 629: loop, if any. ! 630: If ! 631: .I n ! 632: is specified, break ! 633: .I n ! 634: levels. ! 635: .TP ! 636: \fBcontinue\fR \*(OK\fIn\fR\*(CK ! 637: Resume the next iteration of the enclosing ! 638: .B for ! 639: or ! 640: .B while ! 641: loop. If ! 642: .I n ! 643: is specified, resume at the ! 644: .IR n -th ! 645: enclosing loop. ! 646: .TP ! 647: \fBcd\fR \*(OK\fIarg\fR\*(CK ! 648: Change the current directory to ! 649: .I arg. ! 650: The shell parameter ! 651: .B ! 652: .SM $HOME ! 653: is the default ! 654: .IR arg . ! 655: .TP ! 656: \fBeval\fR \*(OK\fIarg \fR...\*(CK ! 657: The arguments are read as input to the shell ! 658: and the resulting command(s) executed. ! 659: .TP ! 660: \fBexec\fR \*(OK\fIarg \fR...\*(CK ! 661: The command specified by the arguments is executed in place of this shell ! 662: without creating a new process. ! 663: Input output arguments may appear and if no other ! 664: arguments are given cause the shell input output to be modified. ! 665: .TP ! 666: \fBexit\fR \*(OK\fIn\fR\*(CK ! 667: Causes a non interactive shell to exit with the exit status specified by ! 668: .I n. ! 669: If ! 670: .I n ! 671: is omitted, the exit status is that of the last command executed. ! 672: (An end of file will also exit from the shell.) ! 673: .TP ! 674: \fBexport\fR \*(OK\fIname\fR ...\*(CK ! 675: The given names are marked for automatic export to the ! 676: .I environment ! 677: of subsequently-executed commands. ! 678: If no arguments are given, a list of exportable names is printed. ! 679: .TP ! 680: \fBlogin\fR \*(OK\fIarg\fR ...\*(CK ! 681: Equivalent to 'exec login arg ...'. ! 682: .TP ! 683: .BI read \ name\ ... ! 684: One line is read from the standard input; ! 685: successive words of the input are assigned to the variables ! 686: .I name ! 687: in order, with leftover words to the last variable. ! 688: The return code is 0 unless the end-of-file is encountered. ! 689: .TP ! 690: \fBreadonly\fR \*(OK\fIname \fR...\*(CK ! 691: The given names are marked readonly and ! 692: the values of the these names may not be changed ! 693: by subsequent assignment. ! 694: If no arguments are given, a list of all readonly names is printed. ! 695: .TP ! 696: \fBset\fR \*(OK\fB\-eknptuvx\fR \*(OK\fIarg \fR...\*(CK\*(CK ! 697: .RS ! 698: .PD 0 ! 699: .TP 3m ! 700: .B \-e ! 701: If non interactive, exit immediately if a command fails. ! 702: .TP ! 703: .B \-k ! 704: All keyword arguments are placed in the environment for a command, ! 705: not just those that precede the command name. ! 706: .TP ! 707: .B \-n ! 708: Read commands but do not execute them. ! 709: .TP ! 710: .B \-t ! 711: Exit after reading and executing one command. ! 712: .TP ! 713: .B \-u ! 714: Treat unset variables as an error when substituting. ! 715: .TP ! 716: .B \-v ! 717: Print shell input lines as they are read. ! 718: .TP ! 719: .B \-x ! 720: Print commands and their arguments as they are executed. ! 721: .TP ! 722: .B \- ! 723: Turn off the ! 724: .B \-x ! 725: and ! 726: .B \-v ! 727: options. ! 728: .PD ! 729: .LP ! 730: These flags can also be used upon invocation of the shell. ! 731: The current set of flags may be found in ! 732: .BR $\- . ! 733: .LP ! 734: Remaining arguments are positional ! 735: parameters and are assigned, in order, to ! 736: .SM ! 737: .BR $1 , ! 738: .SM ! 739: .BR $2 , ! 740: etc. If no arguments are given, the values of all names are printed. ! 741: .RE ! 742: .TP ! 743: .B shift ! 744: The positional parameters from ! 745: .SM ! 746: .BR $2 ... ! 747: are renamed ! 748: .SM ! 749: .BR $1 ... ! 750: .TP ! 751: .B times ! 752: Print the accumulated user and system times for processes run from the shell. ! 753: .TP ! 754: \fBtrap\fR \*(OK\fIarg\fR\*(CK \*(OK\fIn\fR\*(CK ... ! 755: .I Arg ! 756: is a command to be read and executed when the shell receives signal(s) ! 757: .I n. ! 758: (Note that ! 759: .I arg ! 760: is scanned once when the trap is set and once when the trap is taken.) ! 761: Trap commands are executed in order of signal number. If ! 762: .I arg ! 763: is absent, all trap(s) ! 764: .I n ! 765: are reset to their original values. ! 766: If ! 767: .I arg ! 768: is the null ! 769: string, this signal is ignored by the shell and by invoked commands. ! 770: If ! 771: .I n ! 772: is 0, the command ! 773: .I arg ! 774: is executed on exit from the shell, otherwise upon receipt of signal ! 775: .I n ! 776: as numbered in ! 777: .IR sigvec (2). ! 778: .I Trap ! 779: with no arguments prints a list of commands associated with each signal number. ! 780: .TP ! 781: \fBumask \fR[ \fInnn\fR ] ! 782: The user file creation mask is set to the octal value ! 783: .I nnn ! 784: (see ! 785: .IR umask (2)). ! 786: If ! 787: .I nnn ! 788: is omitted, the current value of the mask is printed. ! 789: .TP ! 790: \fBwait\fP \*(OK\fIn\fP\*(CK ! 791: Wait for the specified process and report its termination status. If ! 792: .I n ! 793: is not given, all currently active child processes are waited for. ! 794: The return code from this command is that of the process waited for. ! 795: .PD ! 796: .LP ! 797: .PP ! 798: .B Invocation. ! 799: .br ! 800: If the first character of argument zero is ! 801: .BR \- , ! 802: commands are read from ! 803: .BR \s-2$HOME\s0/.\|profile , ! 804: if such a file exists. ! 805: Commands are then read as described below. ! 806: The following flags are interpreted by the shell when it is invoked. ! 807: .PD 0 ! 808: .TP 11n ! 809: .BI \-c \ string ! 810: If the ! 811: .B \-c ! 812: flag is present, commands are read from ! 813: .I string\|. ! 814: .TP 11n ! 815: .B \-s ! 816: If the ! 817: .B \-s ! 818: flag is present or if no arguments remain ! 819: then commands are read from the standard input. ! 820: Shell output is written to file descriptor 2. ! 821: .TP 11n ! 822: .B \-i ! 823: If the ! 824: .B \-i ! 825: flag is present or ! 826: if the shell input and output are attached to a terminal (as told by ! 827: .IR gtty ) ! 828: then this shell is ! 829: .I interactive. ! 830: In this case the terminate signal SIGTERM (see ! 831: .IR sigvec (2)) ! 832: is ignored (so that 'kill 0' ! 833: does not kill an interactive shell) and the interrupt signal ! 834: SIGINT is caught and ignored (so that ! 835: .B wait ! 836: is interruptible). ! 837: In all cases SIGQUIT is ignored by the shell. ! 838: .PD ! 839: .LP ! 840: The remaining flags and arguments are described under the ! 841: .B set ! 842: command. ! 843: .SH FILES ! 844: .RB $HOME/ . \^profile ! 845: .br ! 846: /tmp/sh* ! 847: .br ! 848: /dev/null ! 849: .SH SEE ALSO ! 850: csh(1), ! 851: test(1), ! 852: execve(2), ! 853: environ(7) ! 854: .SH DIAGNOSTICS ! 855: Errors detected by the shell, such as syntax errors cause the shell ! 856: to return a non zero exit status. ! 857: If the shell is being used non interactively ! 858: then execution of the shell file is abandoned. ! 859: Otherwise, the shell returns the exit status of ! 860: the last command executed (see also ! 861: .BR exit ). ! 862: .SH BUGS ! 863: If \*(LT\*(LT is used to provide standard input to an asynchronous ! 864: process invoked by &, the shell gets mixed up about naming the input document. ! 865: A garbage file /tmp/sh* is created, and the shell complains about ! 866: not being able to find the file by another name.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.