|
|
1.1 root 1: .if t .ds ' \[email protected]@\s+4\[email protected]@\'\[email protected]@\s-4\[email protected]@ 2: .if n .ds ' ' 3: .if t .ds ` \[email protected]@\s+4\[email protected]@\`\[email protected]@\s-4\[email protected]@ 4: .if n .ds ` ` 5: .ds OK [\| 6: .ds CK \|] 7: .TH SH 1 8: .SH NAME 9: sh \- shell, the standard command programming language 10: .SH SYNOPSIS 11: .B sh 12: [ 13: .B \-ceiknrstuvx 14: ] [ args ] 15: .SH DESCRIPTION 16: .I Sh\^ 17: is a command programming language 18: that executes commands read from a terminal 19: or a file. 20: See 21: .I Invocation\^ 22: below 23: for the meaning of arguments to the shell. 24: .SS Commands. 25: A 26: .I simple-command\^ 27: is a sequence of non-blank 28: .I words\^ 29: separated by 30: .I blanks\^ 31: (a 32: .I blank\^ 33: is a 34: tab 35: or a 36: space). 37: The first word specifies the name of the command to 38: be executed. 39: Except as specified below, 40: the remaining words are passed as arguments 41: to the invoked command. 42: The command name is passed as argument 0 43: (see 44: .IR exec (2)). 45: The 46: .I value\^ 47: of a simple-command is its exit status 48: if it terminates normally, or (octal) 200+\f2status\^\fP if 49: it terminates abnormally (see 50: .IR signal (2) 51: for a list of 52: status values). 53: .PP 54: A 55: .I pipeline\^ 56: is a sequence of one or more 57: .I commands\^ 58: separated by 59: .BR \(bv . 60: The standard output of each command but the last 61: is connected by a 62: .IR pipe (2) 63: to the standard input of the next command. 64: Each command is run as a separate process; 65: the shell waits for the last command to terminate. 66: .PP 67: A 68: .I list\^ 69: is a sequence of one or more 70: pipelines 71: separated by 72: .BR ; , 73: .BR & , 74: .BR && , 75: or 76: .BR \(bv\|\(bv , 77: and optionally terminated by 78: .B ; 79: or 80: .BR & . 81: Of these four symbols, 82: .B ; 83: and 84: .B & 85: have equal precedence, 86: which is lower than that of 87: .B && 88: and 89: .BR \(bv\|\(bv . 90: The symbols 91: .B && 92: and 93: .B \(bv\|\(bv 94: also have equal precedence. 95: A semicolon 96: .RB ( ; ) 97: causes sequential execution of the preceding pipeline; an ampersand 98: .RB ( & ) 99: causes asynchronous execution of the preceding pipeline (i.e., the shell does 100: .I not\^ 101: wait for that pipeline to finish). 102: The symbol 103: .B && 104: .RB (\| \(bv\|\(bv \^) 105: causes the 106: .I list\^ 107: following it to be executed only if the preceding 108: pipeline 109: returns a zero (non-zero) exit status. 110: An arbitrary number of new-lines may appear in a 111: .IR list , 112: instead of semicolons, 113: to delimit commands. 114: .PP 115: A 116: .I command\^ 117: is either a simple-command 118: or one of the following. 119: Unless otherwise stated, 120: the value returned by a command is that of the 121: last simple-command executed in the command. 122: .PP 123: .PD 0 124: .TP 125: \f3for\fP \f2name\^\fP \*(OK \f3in\fP \f2word\^\fP .\|.\|. \*(CK \f3do\fP \f2list\^\fP \f3done\fP 126: Each time a 127: .B for 128: command is executed, 129: .I name\^ 130: is set to the next 131: .I word\^ 132: taken from the 133: .B in 134: .I word\^ 135: list. 136: If 137: .BI in " word\^" 138: \&.\|.\|. 139: is omitted, then 140: the 141: .B for 142: command executes the \f3do\fP \f2list\^\fP once for each positional parameter 143: that is set 144: (see 145: .I "Parameter Substitution\^" 146: below). 147: Execution ends when there are no more words in the list. 148: .TP 149: \f3case\fP \f2word\^\fP \f3in\fP \*(OK \f2pattern\^\fP \*(OK \(bv \ 150: \f2pattern\^\fP \*(CK .\|.\|. \f3)\fP \f2list\^\fP \f3;;\fP \*(CK .\|.\|. \f3esac\fP 151: A 152: .B case 153: command executes the 154: .I list\^ 155: associated with the first 156: .I pattern\^ 157: that matches 158: .IR word . 159: The form of the patterns is 160: the same as that used for 161: file-name generation (see 162: .I "File Name Generation\^" 163: below). 164: .TP 165: \f3if\fP \f2list\^\fP \f3then\fP \f2list\^\fP \*(OK \ 166: \f3elif\fP \f2list\^\fP \f3then\fP \f2list\^\fP \*(CK .\|.\|. \ 167: \*(OK \f3else\fP \f2list\^\fP \*(CK \f3f\&i\fP 168: The 169: .I list\^ 170: following \f3if\fP is executed and, 171: if it 172: returns a zero exit status, the 173: .I list\^ 174: following 175: the first 176: .B then 177: is executed. 178: Otherwise, the 179: .I list\^ 180: following \f3elif\fP 181: is executed and, if its value is zero, 182: the 183: .I list\^ 184: following 185: the next 186: .B then 187: is executed. 188: Failing that, the 189: .B else 190: .I list\^ 191: is executed. 192: If no 193: .B else 194: .I list\^ 195: or 196: .B then 197: .I list\^ 198: is executed, then the 199: .B if 200: command returns a zero exit status. 201: .TP 202: \f3while\fP \f2list\^\fP \f3do\fP \f2list\^\fP \f3done\fP 203: A 204: .B while 205: command repeatedly executes the 206: .B while 207: .I list\^ 208: and, if the exit status of the last command in the list is zero, executes 209: the 210: .B do 211: .IR list ; 212: otherwise the loop terminates. 213: If no commands in the 214: .B do 215: .I list\^ 216: are executed, then the 217: .B while 218: command returns a zero exit status; 219: .B until 220: may be used in place of 221: .B while 222: to negate 223: the loop termination test. 224: .TP 225: \f3(\fP\f2list\^\fP\f3)\fP 226: .br 227: Execute 228: .I list\^ 229: in a sub-shell. 230: .TP 231: \f3{\fP\f2list\^\fP\f3;}\fP 232: .br 233: .I list\^ 234: is simply executed. 235: .PD 236: .PP 237: The following words 238: are only recognized as the first word of a command 239: and when not quoted: 240: .if t .RS 241: .PP 242: .B 243: .if n if then else elif fi case esac for while until do done { } 244: .if t if then else elif f\&i case esac for while until do done { } 245: .if t .RE 246: .SS Comments. 247: A word beginning with 248: .B # 249: causes that word and all the following characters up to a new-line 250: to be ignored. 251: .SS Command Substitution. 252: The standard output from a command enclosed in 253: a pair of grave accents (\^\f3\*`\^\*`\fP\^) may be used as part or all 254: of a word; 255: trailing new-lines are removed. 256: .SS Parameter Substitution. 257: The character 258: .B $ 259: is used to introduce substitutable 260: .IR parameters . 261: Positional parameters may be assigned values by 262: .BR set . 263: Variables may be set by writing: 264: .RS 265: .PP 266: .IB name = value\^ 267: \*(OK 268: .IB name = value\^ 269: \*(CK .\|.\|. 270: .RE 271: .PP 272: Pattern-matching is not performed on 273: .IR value . 274: .PP 275: .PD 0 276: .TP 277: \f3${\fP\f2parameter\^\fP\f3}\fP 278: A 279: .I parameter\^ 280: is a sequence of letters, digits, or underscores (a 281: .IR name ), 282: a digit, 283: or any of the characters 284: .BR \(** , 285: .BR @ , 286: .BR # , 287: .BR ? , 288: .BR \- , 289: .BR $ , 290: and 291: .BR !\\^ . 292: The value, if any, of the parameter is substituted. 293: The braces are required only when 294: .I parameter\^ 295: is followed by a letter, digit, or underscore 296: that is not to be interpreted as part of its name. 297: A 298: .I name\^ 299: must begin with a letter or underscore. 300: If 301: .I parameter\^ 302: is a digit then it is a positional parameter. 303: If 304: .I parameter\^ 305: is 306: .B \(** 307: or 308: .BR @ , 309: then all the positional 310: parameters, starting with 311: .BR $1 , 312: are substituted 313: (separated by spaces). 314: Parameter 315: .B $0 316: is set from argument zero when the shell 317: is invoked. 318: .TP 319: \f3${\fP\f2parameter\^\fP\f3:\-\fP\f2word\^\fP\f3}\fP 320: If 321: .I parameter\^ 322: is set and is non-null then substitute its value; 323: otherwise substitute 324: .IR word . 325: .TP 326: \f3${\fP\f2parameter\^\fP\f3:=\fP\f2word\^\fP\f3}\fP 327: If 328: .I parameter\^ 329: is not set or is null 330: then set it to 331: .IR word ; 332: the value of the parameter is then substituted. 333: Positional parameters may not be assigned to 334: in this way. 335: .TP 336: \f3${\fP\f2parameter\^\fP\f3:?\fP\f2word\^\fP\f3}\fP 337: If 338: .I parameter\^ 339: is set and is non-null then substitute its value; 340: otherwise, print 341: .I word\^ 342: and exit from the shell. 343: If 344: .I word\^ 345: is omitted, then the message 346: ``parameter null or not set'' 347: is printed. 348: .TP 349: \f3${\fP\f2parameter\^\fP\f3:+\fP\f2word\^\fP\f3}\fP 350: If 351: .I parameter\^ 352: is set and is non-null then substitute 353: .IR word ; 354: otherwise substitute nothing. 355: .PD 356: .PP 357: In the above, 358: .I word\^ 359: is not evaluated unless it is 360: to be used as the substituted string, 361: so that, in the following example, 362: .B pwd 363: is executed only if 364: .B d 365: is not set or is null: 366: .RS 367: .PP 368: echo \|${d:\-\^\*`\^pwd\^\*`\^} 369: .RE 370: .PP 371: If the colon 372: .RB ( : ) 373: is omitted from the above expressions, then the 374: shell only checks whether 375: .I parameter\^ 376: is set or not. 377: .PP 378: The following 379: parameters 380: are automatically set by the shell: 381: .RS 382: .PD 0 383: .TP 384: .B # 385: The number of positional parameters in decimal. 386: .TP 387: .B \- 388: Flags supplied to the shell on invocation or by 389: the 390: .B set 391: command. 392: .TP 393: .B ? 394: The decimal value returned by the last synchronously executed command. 395: .TP 396: .B $ 397: The process number of this shell. 398: .TP 399: .B ! 400: The process number of the last background command invoked. 401: .PD 402: .RE 403: .PP 404: The following 405: parameters 406: are used by the shell: 407: .RS 408: .PD 0 409: .TP 410: .B 411: .SM HOME 412: The default argument (home directory) for the 413: .I cd\^ 414: command. 415: .TP 416: .B 417: .SM PATH 418: The search path for commands (see 419: .I Execution\^ 420: below). 421: .TP 422: .B 423: .SM MAIL 424: If this variable is set to the name of 425: a mail file, then the shell informs the user of 426: the arrival of mail in the specified file. 427: .TP 428: .SM 429: .B PS1 430: Primary prompt string, by default 431: .RB `` "$ \|" ''. 432: .TP 433: .SM 434: .B PS2 435: Secondary prompt string, by default 436: .RB `` "> \|" ''. 437: .TP 438: .SM 439: .B IFS 440: Internal field separators, 441: normally 442: .BR space , 443: .BR tab , 444: and 445: .BR new-line . 446: .PD 447: .RE 448: .PP 449: The shell gives default values to 450: \f3\s-1PATH\s+1\fP, \f3\s-1PS1\s+1\fP, \f3\s-1PS2\s+1\fP, and \f3\s-1IFS\s+1\fP, 451: while 452: .SM 453: .B HOME 454: and 455: .SM 456: .B MAIL 457: are 458: not set at all by the shell (although 459: .SM 460: .B HOME 461: .I is\^ 462: set by 463: .IR login (1)). 464: .SS Blank Interpretation. 465: After parameter and command substitution, 466: the results of substitution are scanned for internal field separator 467: characters (those found in 468: .BR \s-1IFS\s+1 ) 469: and split into distinct arguments where such characters are found. 470: Explicit null arguments (\^\f3"\^"\fP or \f3\*'\^\*'\fP\^) are retained. 471: Implicit null arguments 472: (those resulting from 473: .I parameters\^ 474: that have no values) are removed. 475: .SS File Name Generation. 476: Following substitution, each command 477: .I word\^ 478: is scanned for 479: the characters 480: .BR \(** , 481: .BR ? , 482: and 483: .BR \*(OK . 484: If one of these characters appears 485: then the word is regarded as a 486: .IR pattern . 487: The word is replaced with alphabetically sorted file names that match the pattern. 488: If no file name is found that matches the pattern, then 489: the word is left unchanged. 490: The character 491: .B . 492: at the start of a file name 493: or immediately following a 494: .BR / , 495: as well as the character 496: .B / 497: itself, 498: must be matched explicitly. 499: .PP 500: .PD 0 501: .RS 502: .TP 503: .B \(** 504: Matches any string, including the null string. 505: .TP 506: .B ? 507: Matches any single character. 508: .TP 509: .BR \*(OK .\|.\|.\^ \*(CK 510: Matches any one of the enclosed characters. 511: A pair of characters separated by 512: .B \- 513: matches any 514: character lexically between the pair, inclusive. 515: If the first character following the opening 516: \`\`\*(OK\'\' 517: is a 518: .B "``!''" 519: then any character not enclosed is matched. 520: .PD 521: .RE 522: .SS Quoting. 523: The following characters have a special meaning to the shell 524: and cause termination of a word unless quoted: 525: .RS 526: .PP 527: \f3; & ( ) \(bv < > new-line space tab\fP 528: .RE 529: .PP 530: A character may be 531: .I quoted\^ 532: (i.e., made to stand for itself) 533: by preceding 534: it with a 535: .BR \e . 536: The pair 537: .B \enew-line 538: is ignored. 539: All characters enclosed between a pair of single quote marks (\^\f3\*'\^\*'\fP\^), 540: except a single quote, 541: are quoted. 542: Inside double quote marks 543: (\f3"\^"\fP), 544: parameter and command substitution occurs and 545: .B \e 546: quotes the characters 547: .BR \e , 548: .BR \*` , 549: \f3"\fP, 550: and 551: .BR $ . 552: .B 553: "$\(**" 554: is equivalent to 555: \f3"$1 \|$2\fP \|.\|.\|.\f3"\fP, 556: whereas 557: .B 558: "$@" 559: is equivalent to 560: .B 561: "$1"\| 562: .B 563: "$2"\| 564: \&.\|.\|.\|. 565: .SS Prompting. 566: When used interactively, 567: the shell prompts with the value of 568: .SM 569: .B PS1 570: before reading a command. 571: If at any time a new-line is typed and further input is needed 572: to complete a command, then the secondary prompt 573: (i.e., the value of 574: .BR \s-1PS2\s+1 ) 575: is issued. 576: .SS Input/Output. 577: Before a command is executed, its input and output 578: may be redirected using a special notation interpreted by the shell. 579: The following may appear anywhere in a simple-command 580: or may precede or follow a 581: .I command\^ 582: and are 583: .I not\^ 584: passed on to the invoked command; 585: substitution occurs before 586: .I word\^ 587: or 588: .I digit\^ 589: is used: 590: .PP 591: .PD 0 592: .TP 14 593: .B <word 594: Use file 595: .I word\^ 596: as standard input (file descriptor 0). 597: .TP 598: .B >word 599: Use file 600: .I word\^ 601: as standard output (file descriptor 1). 602: If the file does not exist then it is created; 603: otherwise, it is truncated to zero length. 604: .TP 605: .B >\[email protected]@>word 606: Use file 607: .I word\^ 608: as standard output. 609: If the file exists then output is appended to it (by first seeking to the end-of-file); 610: otherwise, the file is created. 611: .TP 612: \f3<\[email protected]@<\fP\*(OK\f3\-\fP\*(CK\f3word\fP 613: The shell input is read up to a line that is the same as 614: .IR word , 615: or to an end-of-file. 616: The resulting document becomes 617: the standard input. 618: If any character of 619: .I word\^ 620: is quoted, then no interpretation 621: is placed upon the characters of the document; 622: otherwise, parameter and command substitution occurs, 623: (unescaped) 624: .B \enew-line 625: is ignored, 626: and 627: .B \e 628: must be used to quote the characters 629: .BR \e , 630: .BR $ , 631: .BR \*` , 632: and the first character of 633: .IR word . 634: If 635: .B \- 636: is appended to 637: .BR <\[email protected]@< , 638: then all leading tabs are stripped from 639: .I word\^ 640: and from the document. 641: .TP 642: .B <&digit 643: The standard input is duplicated from file descriptor 644: .I digit\^ 645: (see 646: .IR dup (2)). 647: Similarly for the standard output using 648: .BR > . 649: .TP 650: .B <&\- 651: The standard input is closed. 652: Similarly for the standard output using 653: .BR > . 654: .PD 655: .PP 656: If one of the above is preceded by a digit, 657: then the 658: file descriptor created is that specified 659: by the digit 660: (instead of the default 0 or 1). 661: For example: 662: .RS 663: .PP 664: \&.\|.\|. \|2>&1 665: .RE 666: .PP 667: creates file descriptor 2 that is a duplicate 668: of file descriptor 1. 669: .PP 670: If a command is followed by 671: .B & 672: then the default standard input 673: for the command 674: is the empty file 675: .BR /dev/null . 676: Otherwise, the environment for the execution of a command contains the 677: file descriptors of the invoking shell as modified by 678: input/output specifications. 679: .SS Environment. 680: The 681: .I environment\^ 682: (see 683: .IR environ (7)) 684: is a list of name-value pairs that is passed to 685: an executed program in the same way as a normal argument list. 686: The shell interacts with the environment in several ways. 687: On invocation, the shell scans the environment 688: and creates a 689: parameter 690: for each name found, 691: giving it the corresponding value. 692: Executed commands inherit the same environment. 693: If the user modifies the values of these 694: parameters 695: or creates new ones, 696: none of these affects the environment 697: unless the 698: .B export 699: command is used to bind the shell's 700: parameter 701: to the environment. 702: The environment seen by any executed command is thus composed 703: of any unmodified name-value pairs originally inherited by the shell, 704: plus any modifications or additions, 705: all of which must be noted in 706: .B export 707: commands. 708: .PP 709: The environment for any 710: .I simple-command\^ 711: may be augmented by prefixing it with one or more assignments to 712: parameters. 713: Thus: 714: .RS 715: .PP 716: \s-1TERM\s+1=450 \|cmd \|args and 717: .br 718: (export \|\s-1TERM\s+1; \|\s-1TERM\s+1=450; \|cmd \|args) 719: .RE 720: .PP 721: are equivalent (as far as the above execution of 722: .I cmd\^ 723: is concerned). 724: .PP 725: If the 726: .B \-k 727: flag is set, 728: .I all\^ 729: keyword arguments are placed in the environment, 730: even if they occur after the command name. 731: The following 732: first prints 733: .B "a=b c" 734: and then 735: .BR c: 736: .PP 737: .RS 738: .nf 739: echo \|a=b \|c 740: set \|\-k 741: echo \|a=b \|c 742: .fi 743: .RE 744: .SS Signals. 745: The \s-1INTERRUPT\s+1 and \s-1QUIT\s+1 signals for an invoked 746: command are ignored if the command is followed by 747: .BR & ; 748: otherwise signals have the values 749: inherited by the shell from its parent, 750: with the exception of signal 11 751: (but see also 752: the 753: .B trap 754: command below). 755: .SS Execution. 756: Each time a command is executed, the above substitutions 757: are carried out. 758: Except for the 759: .I "Special Commands\^" 760: listed below, a new 761: process is created and 762: an attempt is made to execute the command via 763: .IR exec (2). 764: .PP 765: The shell parameter 766: .B 767: .SM PATH 768: defines the search path for 769: the directory containing the command. 770: Alternative directory names are separated by 771: a colon 772: .RB ( : ). 773: The default path is 774: .B :/bin:/usr/bin 775: (specifying the current directory, 776: .BR /bin , 777: and 778: .BR /usr/bin , 779: in that order). 780: Note that the current directory is specified by a null path name, 781: which can appear immediately after the equal sign 782: or between the colon delimiters anywhere else in the path list. 783: If the command name contains a \f3/\fP then the search path 784: is not used. 785: Otherwise, each directory in the path is 786: searched for an executable file. 787: If the file has execute permission but is not an 788: .B a.out 789: file, 790: it is assumed to be a file containing shell commands. 791: A sub-shell (i.e., a separate process) is spawned to read it. 792: A parenthesized command is also executed in 793: a sub-shell. 794: .SS Special Commands. 795: The following commands are executed in the shell process 796: and, except as specified, 797: no input/output redirection is permitted for such commands: 798: .PP 799: .PD 0 800: .TP 801: .B : 802: No effect; the command does nothing. 803: A zero exit code is returned. 804: .br 805: .TP 806: .BI ".\| " file\^ 807: Read and execute commands from 808: .I file\^ 809: and return. 810: The search path 811: specified by 812: .B 813: .SM PATH 814: is used to find the directory containing 815: .IR file . 816: .TP 817: \f3break\fP \*(OK \f2n\^\fP \*(CK 818: Exit from the enclosing \f3for\fP or 819: .B while 820: loop, if any. 821: If 822: .I n\^ 823: is specified then break 824: .I n\^ 825: levels. 826: .TP 827: \f3continue\fP \*(OK \f2n\^\fP \*(CK 828: Resume the next iteration of the enclosing 829: \f3for\fP or 830: .B while 831: loop. 832: If 833: .I n\^ 834: is specified then resume at the 835: .IR n -th 836: enclosing loop. 837: .TP 838: \f3cd\fP \*(OK \f2arg\^\fP \*(CK 839: Change the current directory to 840: .IR arg . 841: The shell 842: parameter 843: .B 844: .SM HOME 845: is the default 846: .IR arg . 847: .br 848: .ne 2.1v 849: .TP 850: \f3eval\fP \*(OK \f2arg\^\fP .\|.\|. \*(CK 851: The arguments are read as input 852: to the shell 853: and the resulting command(s) executed. 854: .TP 855: \f3exec\fP \*(OK \f2arg\^\fP .\|.\|. \*(CK 856: The command specified by 857: the arguments is executed in place of this shell 858: without creating a new process. 859: Input/output arguments may appear and, if no other 860: arguments are given, cause the shell 861: input/output to be modified. 862: .TP 863: \f3exit\fP \*(OK \f2n\^\fP \*(CK 864: Causes a shell to exit 865: with the exit status specified by 866: .IR n . 867: If 868: .I n\^ 869: is omitted then the exit status is that of the last command executed 870: (an end-of-file will also cause the shell to exit.) 871: .TP 872: \f3export\fP \*(OK \f2name\^\fP .\|.\|. \*(CK 873: The given 874: .IR name s 875: are marked 876: for automatic export to the 877: .I environment\^ 878: of subsequently-executed commands. 879: If no arguments are given, then a list of all 880: names that are exported in this shell is printed. 881: .TP 882: \f3newgrp\fP \*(OK \f2arg\^\fP .\|.\|. \*(CK 883: Equivalent to 884: .BI "exec newgrp" " arg\^" 885: \&.\|.\|.\|. 886: .TP 887: \f3read\fP \*(OK \f2name\^\fP .\|.\|. \*(CK 888: One line is read from the standard input and 889: the first 890: word is assigned to the first 891: .IR name , 892: the second word 893: to the second 894: .IR name , 895: etc., with leftover words assigned to the last 896: .IR name . 897: The return code is 0 unless an end-of-file is encountered. 898: .TP 899: \f3readonly\fP \*(OK \f2name\^\fP .\|.\|. \*(CK 900: The given 901: .IR name s 902: are marked 903: .I readonly\^ 904: and 905: the values of the these 906: .IR name s 907: may not be changed 908: by subsequent assignment. 909: If no arguments are given, then a list 910: of all 911: .I readonly\^ 912: names is printed. 913: .TP 914: \f3set\fP \*(OK \f3\-ekntuvx\fP \*(OK \f2arg\^\fP .\|.\|. \*(CK \*(CK 915: .RS 916: .TP 917: .B \-e 918: If the shell is non-interactive then exit immediately if a command 919: exits with a non-zero exit status. 920: .TP 921: .B \-k 922: All keyword arguments are placed in the environment for a command, 923: not just those that precede the command name. 924: .TP 925: .B \-n 926: Read commands but do not execute them. 927: .TP 928: .B \-t 929: Exit after reading and executing one command. 930: .TP 931: .B \-u 932: Treat unset variables as an error when substituting. 933: .TP 934: .B \-v 935: Print shell input lines as they are read. 936: .TP 937: .B \-x 938: Print commands and their arguments as they are executed. 939: .TP 940: .B \-\- 941: Do not change any of the flags; useful in setting $1 to -. 942: .PP 943: Using 944: .B \+ 945: rather than 946: .B \- 947: causes these flags to be turned off. 948: These flags can also be used upon invocation of the shell. 949: The current set of flags may be found in 950: .BR $\- . 951: The remaining arguments are positional 952: parameters and are assigned, in order, to 953: .BR $1 , 954: .BR $2 , 955: \&.\|.\|.\|. 956: If no arguments are given then the values 957: of all names are printed. 958: .RE 959: .TP 960: \f3shift\fP 961: .br 962: The positional parameters from 963: .B $2 964: \&.\|.\|. 965: are renamed 966: .B $1 967: \&.\|.\|.\|. 968: .TP 969: \f3test\fP 970: .br 971: Evaluate conditional expressions. See 972: .IR test (1) 973: for usage and description. 974: .TP 975: \f3times\fP 976: .br 977: Print the accumulated user and system times for processes 978: run from the shell. 979: .TP 980: \f3trap\fP \*(OK \f2arg\^\fP \*(CK \*(OK \f2n\^\fP \*(CK .\|.\|. 981: .I arg\^ 982: is a command to be read and executed when the shell 983: receives signal(s) 984: .IR n . 985: (Note that 986: .I arg\^ 987: is scanned once when 988: the trap is set and once when the trap 989: is taken.) 990: Trap commands are executed in order of signal number. 991: Any attempt to set a trap on a signal that 992: was ignored on entry to the current shell 993: is ineffective. 994: An attempt to trap on signal 11 (memory fault) produces an error. 995: If 996: .I arg\^ 997: is absent then all trap(s) 998: .I n\^ 999: are reset 1000: to their original values. 1001: If 1002: .I arg\^ 1003: is the null 1004: string then this signal is ignored by the shell and by the commands 1005: it invokes. 1006: If 1007: .I n\^ 1008: is 0 then the command 1009: .I arg\^ 1010: is executed 1011: on exit from the shell. 1012: The 1013: .B trap 1014: command 1015: with no arguments prints a list 1016: of commands associated with each signal number. 1017: .TP 1018: \f3umask\fP \*(OK \f2nnn\^\fP \*(CK 1019: The user file-creation mask is set to 1020: .I nnn\^ 1021: (see 1022: .IR umask (2)). 1023: If 1024: .I nnn\^ 1025: is omitted, the current value of the mask is printed. 1026: .TP 1027: \f3wait\fP 1028: Wait for all child processes to terminate 1029: report the termination status. 1030: If 1031: .I n\^ 1032: is not given then all currently active child processes are waited for. 1033: The return code from this command is always zero. 1034: .PD 1035: .PP 1036: .SS Invocation. 1037: If the shell is invoked through 1038: .IR exec (2) 1039: and the first character of argument zero 1040: is 1041: .BR \- , 1042: commands are initially read from 1043: .B /etc/profile 1044: and then from 1045: .BR \s-1$HOME\s+1/.profile , 1046: if such files exist. 1047: Thereafter, commands are read as described below, which 1048: is also the case when the shell is invoked as 1049: .BR /bin/sh . 1050: The flags below are interpreted by the shell on invocation only; Note 1051: that unless the 1052: .B \-c 1053: or 1054: .B \-s 1055: flag is specified, the first argument is assumed to be the 1056: name of a file containing commands, and the remaining 1057: arguments are passed as positional parameters 1058: to that command file: 1059: .PP 1060: .PD 0 1061: .TP 10 1062: .BI \-c "\| string\^" 1063: If the 1064: .B \-c 1065: flag is present then 1066: commands are read from 1067: .IR string . 1068: .TP 1069: .B \-s 1070: If the 1071: .B \-s 1072: flag is present or if no 1073: arguments remain 1074: then commands are read from the standard input. 1075: Any remaining arguments specify the positional parameters. 1076: Shell output is written to 1077: file descriptor 2. 1078: .TP 1079: .B \-i 1080: If the 1081: .B \-i 1082: flag is present or 1083: if the shell input and output are attached to a terminal, 1084: then this shell is 1085: .IR interactive . 1086: In this case \s-1TERMINATE\s+1 is ignored (so that \f3kill 0\fP 1087: does not kill an interactive shell) and \s-1INTERRUPT\s+1 is caught and ignored 1088: (so that 1089: .B wait 1090: is interruptible). 1091: In all cases, \s-1QUIT\s+1 is ignored by the shell. 1092: .PD 1093: .PP 1094: The remaining flags and arguments are described under the 1095: .B set 1096: command above. 1097: .PP 1098: .SH EXIT STATUS 1099: Errors detected by the shell, such as syntax errors, 1100: cause the shell 1101: to return a non-zero exit status. 1102: If the shell is being used non-interactively 1103: then execution of the shell file is abandoned. 1104: Otherwise, the shell returns the exit status of 1105: the last command executed (see also the 1106: .B exit 1107: command above). 1108: .SH FILES 1109: /etc/profile 1110: .br 1111: \s-1$HOME\s+1/\f3.\fPprofile 1112: .br 1113: /tmp/sh\(** 1114: .br 1115: /dev/null 1116: .SH SEE ALSO 1117: cd(1), 1118: env(1), 1119: login(1), 1120: newgrp(1), 1121: rsh(1), 1122: test(1), 1123: umask(1), 1124: dup(2), 1125: exec(2), 1126: fork(2), 1127: pipe(2), 1128: signal(2), 1129: ulimit(2), 1130: umask(2), 1131: wait(2), 1132: a.out(5), 1133: profile(5), 1134: environ(7). 1135: .SH BUGS 1136: The command 1137: .B readonly 1138: (without arguments) produces the same output as the command 1139: .BR export . 1140: .br 1141: If 1142: .B <\[email protected]@< 1143: is used to provide standard input to an 1144: asynchronous process invoked by 1145: .BR & , 1146: the shell gets mixed up about naming 1147: the input document; 1148: a garbage file 1149: .B /tmp/sh\(** 1150: is created and the shell complains about not being able 1151: to find that file by another name.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.