Annotation of researchv10dc/man/adm/man1/sh.1, revision 1.1.1.1

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

unix.superglobalmegacorp.com

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