Annotation of 43BSDReno/bin/sh/sh.1, revision 1.1.1.1

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

unix.superglobalmegacorp.com

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