8322 nl: misleading-indentation
[unleashed/tickless.git] / usr / src / man / man1has / sh.1has
blob366f4b9d1f5911177277a12472d1a89de199cacd
1 '\" te
2 .\" Copyright 1989 AT&T
3 .\" Copyright (c) 2008, Sun Microsystems, Inc. All Rights Reserved.
4 .\" Portions Copyright (c) 1992, X/Open Company Limited All Rights Reserved
5 .\" Sun Microsystems, Inc. gratefully acknowledges The Open Group for permission to reproduce portions of its copyrighted documentation. Original documentation from The Open Group can be obtained online at
6 .\" http://www.opengroup.org/bookstore/.
7 .\" The Institute of Electrical and Electronics Engineers and The Open Group, have given us permission to reprint portions of their documentation. In the following statement, the phrase "this text" refers to portions of the system documentation. Portions of this text are reprinted and reproduced in electronic form in the Sun OS Reference Manual, from IEEE Std 1003.1, 2004 Edition, Standard for Information Technology -- Portable Operating System Interface (POSIX), The Open Group Base Specifications Issue 6, Copyright (C) 2001-2004 by the Institute of Electrical and Electronics Engineers, Inc and The Open Group. In the event of any discrepancy between these versions and the original IEEE and The Open Group Standard, the original IEEE and The Open Group Standard is the referee document. The original Standard can be obtained online at http://www.opengroup.org/unix/online.html.
8 .\"  This notice shall appear on any product containing this material.
9 .\" The contents of this file are subject to the terms of the Common Development and Distribution License (the "License").  You may not use this file except in compliance with the License.
10 .\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing.  See the License for the specific language governing permissions and limitations under the License.
11 .\" When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE.  If applicable, add the following below this CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner]
12 .TH SH 1HAS "April 9, 2016"
13 .SH NAME
14 sh, jsh \- standard and job control shell and command interpreter
15 .SH SYNOPSIS
16 .LP
17 .nf
18 \fB/usr/bin/sh\fR  [\fB-acefhiknprstuvx\fR] [\fIargument\fR]...
19 .fi
21 .LP
22 .nf
23 \fB/usr/xpg4/bin/sh\fR  [\(+- abCefhikmnoprstuvx]
24      [\(+- o \fIoption\fR]... [\fB-c\fR \fIstring\fR] [\fIarg\fR]...
25 .fi
27 .LP
28 .nf
29 \fB/usr/bin/jsh\fR  [\fB-acefhiknprstuvx\fR] [\fIargument\fR]...
30 .fi
32 .SH DESCRIPTION
33 .LP
34 The \fB/usr/bin/sh\fR utility is a command programming language that executes
35 commands read from a terminal or a file.
36 .sp
37 .LP
38 The \fB/usr/xpg4/bin/sh\fR utility is a standards compliant shell. This utility
39 provides all the functionality of \fBksh\fR(1), except in cases discussed in
40 \fBksh\fR(1) where differences in behavior exist.
41 .sp
42 .LP
43 The \fBjsh\fR utility is an interface to the shell that provides all of the
44 functionality of \fBsh\fR and enables job control (see \fBJob Control\fR
45 section below).
46 .sp
47 .LP
48 Arguments to the shell are listed in the \fBInvocation\fR section below.
49 .SS "Definitions"
50 .LP
51 A \fIblank\fR is a tab or a space. A \fIname\fR is a sequence of \fBASCII\fR
52 letters, digits, or underscores, beginning with a letter or an underscore. A
53 \fIparameter\fR is a name, a digit, or any of the characters \fB*\fR, \fB@\fR,
54 \fB#\fR, \fB?\fR, \fB\(mi\fR, \fB$\fR, and \fB!\fR.
55 .SH USAGE
56 .SS "Commands"
57 .LP
58 A \fIsimple-command\fR is a sequence of non-blank \fIword\fRs separated by
59 \fIblank\fRs. The first \fIword\fR specifies the name of the command to be
60 executed. Except as specified below, the remaining \fIword\fRs are passed as
61 arguments to the invoked command. The command name is passed as argument 0 (see
62 \fBexec\fR(2)). The \fIvalue\fR of a \fIsimple-command\fR is its exit status if
63 it terminates normally, or (octal) \fB200\fR+\fIstatus\fR if it terminates
64 abnormally. See \fBsignal.h\fR(3HEAD) for a list of status values.
65 .sp
66 .LP
67 A \fIpipeline\fR is a sequence of one or more \fIcommand\fRs separated by
68 \fB|\fR. The standard output of each \fIcommand\fR but the last is connected by
69 a \fBpipe\fR(2) to the standard input of the next \fIcommand\fR. Each
70 \fIcommand\fR is run as a separate process. The shell waits for the last
71 \fIcommand\fR to terminate. The exit status of a \fIpipeline\fR is the exit
72 status of the last command in the \fIpipeline\fR.
73 .sp
74 .LP
75 A \fIlist\fR is a sequence of one or more \fIpipeline\fRs separated by \fB;\fR,
76 \fB&\fR, \fB&&\fR, or \fB|\||\fR, and optionally terminated by \fB;\fR or
77 \fB&\fR\&. Of these four symbols, \fB;\fR and \fB&\fR have equal precedence,
78 which is lower than that of \fB&&\fR and \fB|\||\fR. The symbols \fB&&\fR and
79 \fB|\||\fR also have equal precedence. A semicolon (\fB;\fR) causes sequential
80 execution of the preceding \fIpipeline\fR, that is, the shell waits for the
81 \fIpipeline\fR to finish before executing any commands following the semicolon.
82 An ampersand (\fB&\fR) causes asynchronous execution of the preceding pipeline,
83 that is, the shell does \fBnot\fR wait for that pipeline to finish. The symbol
84 \fB&&\fR (\|\fB|\||\fR) causes the \fIlist\fR following it to be executed only
85 if the preceding pipeline returns a zero (non-zero) exit status. An arbitrary
86 number of newlines can appear in a \fIlist\fR, instead of semicolons, to
87 delimit commands.
88 .sp
89 .LP
90 A \fIcommand\fR is either a \fIsimple-command\fR or one of the following.
91 Unless otherwise stated, the value returned by a command is that of the last
92 \fIsimple-command\fR executed in the command.
93 .sp
94 .ne 2
95 .na
96 \fB\fBfor\fR \fIname\fR [ \fBin\fR \fIword\fR .\|.\|. ] \fBdo\fR \fIlist\fR
97 \fBdone\fR\fR
98 .ad
99 .sp .6
100 .RS 4n
101 Each time a \fBfor\fR command is executed, \fIname\fR is set to the next
102 \fIword\fR taken from the \fBin\fR \fIword\fR list. If \fBin\fR
103 \fIword\fR .\|.\|. is omitted, then the \fBfor\fR command executes the \fBdo\fR \fIlist\fR
104 once for each positional parameter that is set (see \fBParameter
105 Substitution\fR section below). Execution ends when there are no more words in
106 the list.
110 .ne 2
112 \fB\fBcase\fR \fIword\fR \fBin\fR [ \fIpattern\fR [ | \fIpattern\fR ] \fB)\fR
113 \fIlist\fR \fB;\|;\fR ] .\|.\|.  \fBesac\fR\fR
115 .sp .6
116 .RS 4n
117 A \fBcase\fR command executes the \fIlist\fR associated with the first
118 \fIpattern\fR that matches \fIword\fR. The form of the patterns is the same as
119 that used for file-name generation (see \fBFile Name Generation\fR section),
120 except that a slash, a leading dot, or a dot immediately following a slash need
121 not be matched explicitly.
126 \fBif\fR \fIlist\fR \fB; then\fR \fIlist\fR \fBelif\fR \fIlist\fR \fB; then\fR
127 \fIlist\fR \fB;\fR ] .\|.\|. [ \fBelse\fR \fIlist\fR \fB;\fR ] \fBfi\fR
130 The \fIlist\fR following \fBif\fR is executed and, if it returns a zero exit
131 status, the \fIlist\fR following the first \fBthen\fR is executed. Otherwise,
132 the \fIlist\fR following \fBelif\fR is executed and, if its value is zero, the
133 \fIlist\fR following the next \fBthen\fR is executed. Failing that, the
134 \fBelse\fR \fIlist\fR is executed. If no \fBelse\fR \fIlist\fR or \fBthen\fR
135 \fIlist\fR is executed, then the \fBif\fR command returns a zero exit status.
137 .ne 2
139 \fB\fBwhile\fR \fIlist\fR \fBdo\fR \fIlist\fR \fBdone\fR\fR
141 .RS 27n
142 A \fBwhile\fR command repeatedly executes the \fBwhile\fR \fIlist\fR and, if
143 the exit status of the last command in the list is zero, executes the \fBdo\fR
144 \fIlist\fR; otherwise the loop terminates. If no commands in the \fBdo\fR
145 \fIlist\fR are executed, then the \fBwhile\fR command returns a zero exit
146 status; \fBuntil\fR can be used in place of \fBwhile\fR to negate the loop
147 termination test.
151 .ne 2
153 \fB\fB(\fR\fIlist\fR\fB)\fR\fR
155 .RS 27n
156 Execute \fIlist\fR in a sub-shell.
160 .ne 2
162 \fB\fB{\fR \fIlist\fR\fB;}\fR\fR
164 .RS 27n
165 \fIlist\fR is executed in the current (that is, parent) shell. The \fB{\fR must
166 be followed by a space.
170 .ne 2
172 \fB\fIname\fR \fB(\|) {\fR \fIlist\fR\fB;}\fR\fR
174 .RS 27n
175 Define a function which is referenced by \fIname\fR. The body of the function
176 is the \fIlist\fR of commands between \fB{\fR and \fB}\fR. The \fB{\fR must be
177 followed by a space. Execution of functions is described below (see
178 \fBExecution\fR section). The \fB{\fR and \fB}\fR are unnecessary if the body
179 of the function is a \fIcommand\fR as defined above, under \fBCommands\fR.
184 The following words are only recognized as the first word of a command and when
185 not quoted:
188 \fBif  then  else  elif  fi  case  esac  for  while  until  do  done  {  }\fR
189 .SS "Comments Lines"
191 A word beginning with \fB#\fR causes that word and all the following characters
192 up to a newline to be ignored.
193 .SS "Command Substitution"
195 The shell reads commands from the string between two grave accents (\fB``\fR)
196 and the standard output from these commands can be used as all or part of a
197 word. Trailing newlines from the standard output are removed.
200 No interpretation is done on the string before the string is read, except to
201 remove backslashes (\fB\e\fR) used to escape other characters. Backslashes can
202 be used to escape a grave accent (\fB`\fR) or another backslash (\fB\e\fR) and
203 are removed before the command string is read. Escaping grave accents allows
204 nested command substitution. If the command substitution lies within a pair of
205 double quotes (\fB" .\|.\|.\|` .\|.\|.\|` .\|.\|.\| "\fR), a backslash used to
206 escape a double quote (\fB\e"\fR) is removed. Otherwise, it is left intact.
209 If a backslash is used to escape a newline character (\fB\enewline\fR), both
210 the backslash and the newline are removed (see the later section on
211 \fBQuoting\fR). In addition, backslashes used to escape dollar signs
212 (\fB\e$\fR) are removed. Since no parameter substitution is done on the command
213 string before it is read, inserting a backslash to escape a dollar sign has no
214 effect. Backslashes that precede characters other than \fB\e\fR, \fB`\fR,
215 \fB"\fR, \fBnewline\fR, and \fB$\fR are left intact when the command string is
216 read.
217 .SS "Parameter Substitution"
219 The character \fB$\fR is used to introduce substitutable \fIparameter\fRs.
220 There are two types of parameters, positional and keyword. If \fIparameter\fR
221 is a digit, it is a positional parameter. Positional parameters can be assigned
222 values by \fBset\fR. Keyword parameters (also known as variables) can be
223 assigned values by writing:
226 \fIname\fR\fB=\fR\fIvalue\fR [ \fIname\fR\fB=\fR\fIvalue\fR ] .\|.\|.
229 Pattern-matching is not performed on \fIvalue\fR. There cannot be a function
230 and a variable with the same \fIname\fR.
232 .ne 2
234 \fB\fB${\fR\fIparameter\fR\fB}\fR\fR
236 .RS 25n
237 The value, if any, of the parameter is substituted. The braces are required
238 only when \fIparameter\fR is followed by a letter, digit, or underscore that is
239 not to be interpreted as part of its name. If \fIparameter\fR is \fB*\fR or
240 \fB@\fR, all the positional parameters, starting with \fB$1\fR, are substituted
241 (separated by spaces). Parameter \fB$0\fR is set from argument zero when the
242 shell is invoked.
246 .ne 2
248 \fB\fB${\fR\fIparameter\fR\fB:\(mi\fR\fIword\fR\fB}\fR\fR
250 .RS 25n
251 Use Default Values. If \fIparameter\fR is unset or null, the expansion of
252 \fIword\fR is substituted; otherwise, the value of \fIparameter\fR is
253 substituted.
257 .ne 2
259 \fB\fB${\fR\fIparameter\fR\fB:=\fR\fIword\fR\fB}\fR\fR
261 .RS 25n
262 Assign Default Values. If \fIparameter\fR is unset or null, the expansion of
263 \fIword\fR is assigned to \fIparameter\fR. In all cases, the final value of
264 \fIparameter\fR is substituted. Only variables, not positional parameters or
265 special parameters, can be assigned in this way.
269 .ne 2
271 \fB\fB${\fR\fIparameter\fR\fB:?\fR\fIword\fR\fB}\fR\fR
273 .RS 25n
274 If \fIparameter\fR is set and is non-null, substitute its value; otherwise,
275 print \fIword\fR and exit from the shell. If \fIword\fR is omitted, the message
276 "parameter null or not set" is printed.
280 .ne 2
282 \fB\fB${\fR\fIparameter\fR\fB:+\fR\fIword\fR\fB}\fR\fR
284 .RS 25n
285 If \fIparameter\fR is set and is non-null, substitute \fIword\fR; otherwise
286 substitute nothing.
291 In the above, \fIword\fR is not evaluated unless it is to be used as the
292 substituted string, so that, in the following example, \fBpwd\fR is executed
293 only if \fBd\fR is not set or is null:
295 .in +2
297 \fBecho  ${d:\(mi`pwd`}\fR
299 .in -2
304 If the colon (\fB:\fR) is omitted from the above expressions, the shell only
305 checks whether \fIparameter\fR is set or not.
308 The following parameters are automatically set by the shell.
310 .ne 2
312 \fB\fB#\fR\fR
314 .RS 8n
315 The number of positional parameters in decimal.
319 .ne 2
321 \fB\fB\(mi\fR\fR
323 .RS 8n
324 Flags supplied to the shell on invocation or by the \fBset\fR command.
328 .ne 2
330 \fB\fB?\fR\fR
332 .RS 8n
333 The decimal value returned by the last synchronously executed command.
337 .ne 2
339 \fB\fB$\fR\fR
341 .RS 8n
342 The process number of this shell.
346 .ne 2
348 \fB\fB!\fR\fR
350 .RS 8n
351 The process number of the last background command invoked.
356 The following parameters are used by the shell. The parameters in this section
357 are also referred to as environment variables.
359 .ne 2
361 \fB\fBHOME\fR\fR
363 .RS 13n
364 The default argument (home directory) for the \fBcd\fR command, set to the
365 user's login directory by \fBlogin\fR(1) from the password file (see
366 \fBpasswd\fR(4)).
370 .ne 2
372 \fB\fBPATH\fR\fR
374 .RS 13n
375 The search path for commands (see \fBExecution\fR section below).
379 .ne 2
381 \fB\fBCDPATH\fR\fR
383 .RS 13n
384 The search path for the \fBcd\fR command.
388 .ne 2
390 \fB\fBMAIL\fR\fR
392 .RS 13n
393 If this parameter is set to the name of a mail file \fIand\fR the
394 \fBMAILPATH\fR  parameter is not set, the shell informs the user of the arrival
395 of mail in the specified file.
399 .ne 2
401 \fB\fBMAILCHECK\fR\fR
403 .RS 13n
404 This parameter specifies how often (in seconds) the shell checks for the
405 arrival of mail in the files specified by the \fBMAILPATH\fR or \fBMAIL\fR
406 parameters. The default value is \fB600\fR seconds (10 minutes). If set to 0,
407 the shell checks before each prompt.
411 .ne 2
413 \fB\fBMAILPATH\fR\fR
415 .RS 13n
416 A colon-separated list of file names. If this parameter is set, the shell
417 informs the user of the arrival of mail in any of the specified files. Each
418 file name can be followed by % and a message that is e printed when the
419 modification time changes. The default message is, \fByou have mail\fR.
423 .ne 2
425 \fB\fBPS1\fR\fR
427 .RS 13n
428 Primary prompt string, by default " $ \|".
432 .ne 2
434 \fB\fBPS2\fR\fR
436 .RS 13n
437 Secondary prompt string, by default " > \|".
441 .ne 2
443 \fB\fBIFS\fR\fR
445 .RS 13n
446 Internal field separators, normally \fBspace\fR, \fBtab\fR, and \fBnewline\fR
447 (see \fBBlank Interpretation\fR section).
451 .ne 2
453 \fB\fBSHACCT\fR\fR
455 .RS 13n
456 If this parameter is set to the name of a file writable by the user, the shell
457 writes an accounting record in the file for each shell procedure executed.
461 .ne 2
463 \fB\fBSHELL\fR\fR
465 .RS 13n
466 When the shell is invoked, it scans the environment (see \fBEnvironment\fR
467 section below) for this name.
472 See \fBenviron\fR(5) for descriptions of the following environment variables
473 that affect the execution of \fBsh\fR: \fBLC_CTYPE\fR and \fBLC_MESSAGES\fR.
476 The shell gives default values to \fBPATH\fR, \fBPS1\fR, \fBPS2\fR,
477 \fBMAILCHECK\fR, and \fBIFS\fR. Default values for \fBHOME\fR and \fBMAIL\fR
478 are set by \fBlogin\fR(1).
479 .SS "Blank Interpretation"
481 After parameter and command substitution, the results of substitution are
482 scanned for internal field separator characters (those found in \fBIFS\fR) and
483 split into distinct arguments where such characters are found. Explicit null
484 arguments (\fB""\fR or \fB\&''\fR) are retained. Implicit null arguments (those
485 resulting from \fIparameter\fRs that have no values) are removed.
486 .SS "Input/Output Redirection"
488 A command's input and output can be redirected using a special notation
489 interpreted by the shell. The following can appear anywhere in a
490 \fIsimple-command\fR or can precede or follow a \fIcommand\fR and are \fBnot\fR
491 passed on as arguments to the invoked command. \fBNote:\fR Parameter and
492 command substitution occurs before \fIword\fR or \fIdigit\fR is used.
494 .ne 2
496 \fB\fB<\fR\fIword\fR\fR
498 .RS 16n
499 Use file \fIword\fR as standard input (file descriptor 0).
503 .ne 2
505 \fB\fB>\fR\fIword\fR\fR
507 .RS 16n
508 Use file \fIword\fR as standard output (file descriptor 1). If the file does
509 not exist, it is created; otherwise, it is truncated to zero length.
513 .ne 2
515 \fB\fB>>\fR\fIword\fR\fR
517 .RS 16n
518 Use file \fIword\fR as standard output. If the file exists, output is appended
519 to it by first seeking to the \fBEOF\fR. Otherwise, the file is created.
523 .ne 2
525 \fB\fB<\|>\fR\fIword\fR\fR
527 .RS 16n
528 Open file \fIword\fR for reading and writing as standard input.
532 .ne 2
534 \fB\fB<<\fR[\fB\(mi\fR]\fIword\fR\fR
536 .RS 16n
537 After parameter and command substitution is done on \fIword\fR, the shell input
538 is read up to the first line that literally matches the resulting \fIword\fR,
539 or to an \fBEOF\fR. If, however, the hyphen (\fB\(mi\fR) is appended to
540 \fB<<\fR:
541 .RS +4
544 leading tabs are stripped from \fIword\fR before the shell input is read
545 (but after parameter and command substitution is done on \fIword\fR);
547 .RS +4
550 leading tabs are stripped from the shell input as it is read and before each
551 line is compared with \fIword\fR; and
553 .RS +4
556 shell input is read up to the first line that literally matches the
557 resulting \fIword\fR, or to an \fBEOF\fR.
559 If any character of \fIword\fR is quoted (see \fBQuoting\fR section later), no
560 additional processing is done to the shell input. If no characters of
561 \fIword\fR are quoted:
562 .RS +4
565 parameter and command substitution occurs;
567 .RS +4
570 (escaped) \fB\enewline\fRs are removed; and
572 .RS +4
575 \fB\e\fR must be used to quote the characters \fB\e\fR, \fB$\fR, and
576 \fB`\fR.
578 The resulting document becomes the standard input.
582 .ne 2
584 \fB\fB<&\fR\fIdigit\fR\fR
586 .RS 16n
587 Use the file associated with file descriptor \fIdigit\fR as standard input.
588 Similarly for the standard output using \fB>&\fR\fIdigit\fR.
592 .ne 2
594 \fB\fB<&\(mi\fR\fR
596 .RS 16n
597 The standard input is closed. Similarly for the standard output using
598 \fB>&\(mi\fR.
603 If any of the above is preceded by a digit, the file descriptor which is
604 associated with the file is that specified by the digit (instead of the default
605 \fB0\fR or \fB1\fR). For example:
607 .in +2
609 \fB\&... 2>&1\fR
611 .in -2
616 associates file descriptor 2 with the file currently associated with file
617 descriptor 1.
620 The order in which redirections are specified is significant. The shell
621 evaluates redirections left-to-right. For example:
623 .in +2
625 \fB\&... 1>\fIxxx\fR 2>&1\fR
627 .in -2
632 first associates file descriptor 1 with file \fIxxx\fR. It associates file
633 descriptor 2 with the file associated with file descriptor 1 (that is,
634 \fIxxx\fR). If the order of redirections were reversed, file descriptor 2 would
635 be associated with the terminal (assuming file descriptor 1 had been) and file
636 descriptor 1 would be associated with file \fIxxx\fR.
639 Using the terminology introduced on the first page, under \fBCommands\fR, if a
640 \fIcommand\fR is composed of several \fIsimple commands\fR, redirection is
641 evaluated for the entire \fIcommand\fR before it is evaluated for each
642 \fIsimple command\fR. That is, the shell evaluates redirection for the entire
643 \fIlist\fR, then each \fIpipeline\fR within the \fIlist\fR, then each
644 \fIcommand\fR within each \fIpipeline\fR, then each \fIlist\fR within each
645 \fIcommand\fR.
648 If a command is followed by \fB&\fR, the default standard input for the command
649 is the empty file, \fB/dev/null\fR. Otherwise, the environment for the
650 execution of a command contains the file descriptors of the invoking shell as
651 modified by input/output specifications.
652 .SS "File Name Generation"
654 Before a command is executed, each command \fIword\fR is scanned for the
655 characters \fB*\fR, \fB?\fR, and \fB[\fR. If one of these characters appears
656 the word is regarded as a \fIpattern\fR. The word is replaced with
657 alphabetically sorted file names that match the pattern. If no file name is
658 found that matches the pattern, the word is left unchanged. The character
659 \fB\&.\fR at the start of a file name or immediately following a \fB/\fR, as
660 well as the character \fB/\fR itself, must be matched explicitly.
662 .ne 2
664 \fB\fB*\fR\fR
666 .RS 13n
667 Matches any string, including the null string.
671 .ne 2
673 \fB\fB?\fR\fR
675 .RS 13n
676 Matches any single character.
680 .ne 2
682 \fB\fB[\fR.\|.\|.\fB]\fR\fR
684 .RS 13n
685 Matches any one of the enclosed characters. A pair of characters separated by
686 \fB\(mi\fR matches any character lexically between the pair, inclusive. If the
687 first character following the opening \fB[\fR is a \fB!\fR, any character not
688 enclosed is matched.
693 Notice that all quoted characters (see below) must be matched explicitly in a
694 filename.
695 .SS "Quoting"
697 The following characters have a special meaning to the shell and cause
698 termination of a word unless quoted:
701 \fB;  &  (  )  |  ^  <  >  newline  space  tab\fR
704 A character can be \fIquoted\fR (that is, made to stand for itself) by
705 preceding it with a backslash (\fB\e\fR) or inserting it between a pair of
706 quote marks (\fB\|'\|'\fR or \fB""\fR). During processing, the shell can quote
707 certain characters to prevent them from taking on a special meaning.
708 Backslashes used to quote a single character are removed from the word before
709 the command is executed. The pair \fB\enewline\fR is removed from a word before
710 command and parameter substitution.
713 All characters enclosed between a pair of single quote marks (\fB\|'\|'\fR),
714 except a single quote, are quoted by the shell. Backslash has no special
715 meaning inside a pair of single quotes. A single quote can be quoted inside a
716 pair of double quote marks (for example, \fB"\|'"\fR), but a single quote can
717 not be quoted inside a pair of single quotes.
720 Inside a pair of double quote marks (\fB""\fR), parameter and command
721 substitution occurs and the shell quotes the results to avoid blank
722 interpretation and file name generation. If \fB$*\fR is within a pair of double
723 quotes, the positional parameters are substituted and quoted, separated by
724 quoted spaces (\fB"$1 \|$2\fR \|.\|.\|.\fB"\fR). However, if \fB$@\fR is within
725 a pair of double quotes, the positional parameters are substituted and quoted,
726 separated by unquoted spaces (\fB"$1"\|"$2"\fR \| .\|.\|. ). \fB\e\fR quotes
727 the characters \fB\e\fR, \fB`\fR, \fB,\fR (comma), and \fB$\fR. The pair
728 \fB\enewline\fR is removed before parameter and command substitution. If a
729 backslash precedes characters other than \fB\e\fR, \fB`\fR, \fB,\fR (comma),
730 \fB$\fR, and newline, then the backslash itself is quoted by the shell.
731 .SS "Prompting"
733 When used interactively, the shell prompts with the value of \fBPS1\fR before
734 reading a command. If at any time a newline is typed and further input is
735 needed to complete a command, the secondary prompt (that is, the value of
736 \fBPS2\fR) is issued.
737 .SS "Environment"
739 The \fIenvironment\fR (see \fBenviron\fR(5)) is a list of name-value pairs that
740 is passed to an executed program in the same way as a normal argument list. The
741 shell interacts with the environment in several ways. On invocation, the shell
742 scans the environment and creates a parameter for each name found, giving it
743 the corresponding value. If the user modifies the value of any of these
744 parameters or creates new parameters, none of these affects the environment
745 unless the \fBexport\fR command is used to bind the shell's parameter to the
746 environment (see also \fBset\fR \fB-a\fR). A parameter can be removed from the
747 environment with the \fBunset\fR command. The environment seen by any executed
748 command is thus composed of any unmodified name-value pairs originally
749 inherited by the shell, minus any pairs removed by \fBunset\fR, plus any
750 modifications or additions, all of which must be noted in \fBexport\fR
751 commands.
754 The environment for any \fIsimple-command\fR can be augmented by prefixing it
755 with one or more assignments to parameters. Thus:
757 .in +2
759 \fBTERM=450  \fIcommand\fR\fR
761 .in -2
768 .in +2
770 \fB(export TERM; TERM=450;   \fIcommand\fR\fR
772 .in -2
777 are equivalent as far as the execution of \fIcommand\fR is concerned if
778 \fIcommand\fR is not a Special Command. If \fIcommand\fR is a Special Command,
779 then
781 .in +2
783 \fBTERM=450   \fIcommand\fR\fR
785 .in -2
790 modifies the \fBTERM\fR variable in the current shell.
793 If the \fB-k\fR flag is set, \fIall\fR keyword arguments are placed in the
794 environment, even if they occur after the command name. The following example
795 first prints \fBa=b c\fR and \fBc\fR:
797 .in +2
799 \fBecho a=b  c
801 a=b  c
803 set  \(mik
805 echo a=b  c
807 c\fR
809 .in -2
812 .SS "Signals"
814 The \fBINTERRUPT\fR and \fBQUIT\fR signals for an invoked command are ignored
815 if the command is followed by \fB&\fR\&. Otherwise, signals have the values
816 inherited by the shell from its parent, with the exception of signal 11 (but
817 see also the \fBtrap\fR command below).
818 .SS "Execution"
820 Each time a command is executed, the command substitution, parameter
821 substitution, blank interpretation, input/output redirection, and filename
822 generation listed above are carried out. If the command name matches the name
823 of a defined function, the function is executed in the shell process (note how
824 this differs from the execution of shell script files, which require a
825 sub-shell for invocation). If the command name does not match the name of a
826 defined function, but matches one of the \fBSpecial Commands\fR listed below,
827 it is executed in the shell process.
830 The positional parameters \fB$1\fR, \fB$2\fR, .\|.\|. are set to the arguments
831 of the function. If the command name matches neither a \fBSpecial Command\fR
832 nor the name of a defined function, a new process is created and an attempt is
833 made to execute the command via \fBexec\fR(2).
836 The shell parameter \fBPATH\fR defines the search path for the directory
837 containing the command. Alternative directory names are separated by a colon
838 (\fB:\fR). The default path is \fB/usr/bin\fR. The current directory is
839 specified by a null path name, which can appear immediately after the equal
840 sign, between two colon delimiters anywhere in the path list, or at the end of
841 the path list. If the command name contains a \fB/\fR the search path is not
842 used. Otherwise, each directory in the path is searched for an executable file.
843 If the file has execute permission but is not an \fBa.out\fR file, it is
844 assumed to be a file containing shell commands. A sub-shell is spawned to read
845 it. A parenthesized command is also executed in a sub-shell.
848 The location in the search path where a command was found is remembered by the
849 shell (to help avoid unnecessary \fIexec\fRs later). If the command was found
850 in a relative directory, its location must be re-determined whenever the
851 current directory changes. The shell forgets all remembered locations whenever
852 the \fBPATH\fR variable is changed or the \fBhash\fR \fB-r\fR command is
853 executed (see below).
854 .SS "Special Commands"
856 Input/output redirection is now permitted for these commands. File descriptor 1
857 is the default output location. When Job Control is enabled, additional
858 \fBSpecial Commands\fR are added to the shell's environment (see \fBJob
859 Control\fR section below).
861 .ne 2
863 \fB\fB:\fR\fR
865 .sp .6
866 .RS 4n
867 No effect; the command does nothing. A zero exit code is returned.
871 .ne 2
873 \fB\fB\&.\|\fR \fIfilename\fR\fR
875 .sp .6
876 .RS 4n
877 Read and execute commands from \fIfilename\fR and return. The search path
878 specified by \fBPATH\fR is used to find the directory containing
879 \fIfilename\fR.
883 .ne 2
885 \fB\fBbg\fR [\fB%\fR\fIjobid .\|.\|.\fR]\fR
887 .sp .6
888 .RS 4n
889 When Job Control is enabled, the \fBbg\fR command is added to the user's
890 environment to manipulate jobs. Resumes the execution of a stopped job in the
891 background. If \fB%\fR\fIjobid\fR is omitted the current job is assumed. (See
892 \fBJob Control\fR section below for more detail.)
896 .ne 2
898 \fB\fBbreak\fR [ \fIn\fR ]\fR
900 .sp .6
901 .RS 4n
902 Exit from the enclosing \fBfor\fR or \fBwhile\fR loop, if any. If \fIn\fR is
903 specified, break \fIn\fR levels.
907 .ne 2
909 \fB\fBcd\fR [ \fIargument\fR ]\fR
911 .sp .6
912 .RS 4n
913 Change the current directory to \fIargument\fR. The shell parameter \fBHOME\fR
914 is the default \fIargument\fR. The shell parameter \fBCDPATH\fR defines the
915 search path for the directory containing \fIargument\fR. Alternative directory
916 names are separated by a colon (\fB:\fR). The default path is \fB<null>\fR
917 (specifying the current directory). \fBNote:\fR The current directory is
918 specified by a null path name, which can appear immediately after the equal
919 sign or between the colon delimiters anywhere else in the path list. If
920 \fIargument\fR begins with a \fB/\fR the search path is not used. Otherwise,
921 each directory in the path is searched for \fIargument\fR.
925 .ne 2
927 \fB\fBchdir\fR [ \fIdir\fR ]\fR
929 .sp .6
930 .RS 4n
931 \fBchdir\fR changes the shell's working directory to directory \fIdir\fR. If no
932 argument is given, change to the home directory of the user. If \fIdir\fR is a
933 relative pathname not found in the current directory, check for it in those
934 directories listed in the \fBCDPATH\fR variable. If \fIdir\fR is the name of a
935 shell variable whose value starts with a \fB/\fR, change to the directory named
936 by that value.
940 .ne 2
942 \fB\fBcontinue\fR [ \fIn\fR ]\fR
944 .sp .6
945 .RS 4n
946 Resume the next iteration of the enclosing \fBfor\fR or \fBwhile\fR loop. If
947 \fIn\fR is specified, resume at the \fIn\fR-th enclosing loop.
951 .ne 2
953 \fB\fBecho\fR [ \fIarguments\fR .\|.\|. ]\fR
955 .sp .6
956 .RS 4n
957 The words in \fIarguments\fR are written to the shell's standard output,
958 separated by space characters. See \fBecho\fR(1) for fuller usage and
959 description.
963 .ne 2
965 \fB\fBeval\fR [ \fIargument\fR .\|.\|. ]\fR
967 .sp .6
968 .RS 4n
969 The arguments are read as input to the shell and the resulting command(s)
970 executed.
974 .ne 2
976 \fB\fBexec\fR [ \fIargument\fR .\|.\|. ]\fR
978 .sp .6
979 .RS 4n
980 The command specified by the arguments is executed in place of this shell
981 without creating a new process. Input/output arguments can appear and, if no
982 other arguments are given, cause the shell input/output to be modified.
986 .ne 2
988 \fB\fBexit\fR [ \fIn\fR ]\fR
990 .sp .6
991 .RS 4n
992 Causes the calling shell or shell script to exit with the exit status specified
993 by \fIn\fR. If \fIn\fR is omitted the exit status is that of the last command
994 executed (an \fBEOF\fR also causes the shell to exit.)
998 .ne 2
1000 \fB\fBexport\fR [ \fIname\fR .\|.\|. ]\fR
1002 .sp .6
1003 .RS 4n
1004 The given \fIname\fRs are marked for automatic export to the \fIenvironment\fR
1005 of subsequently executed commands. If no arguments are given, variable names
1006 that have been marked for export during the current shell's execution are
1007 listed. (Variable names exported from a parent shell are listed only if they
1008 have been exported again during the current shell's execution.) Function names
1009 are \fBnot\fR exported.
1013 .ne 2
1015 \fB\fBfg\fR [\fB%\fR\fIjobid .\|.\|.\fR]\fR
1017 .sp .6
1018 .RS 4n
1019 When Job Control is enabled, the \fBfg\fR command is added to the user's
1020 environment to manipulate jobs. This command resumes the execution of a stopped
1021 job in the foreground and also moves an executing background job into the
1022 foreground. If \fB%\fR\fIjobid\fR is omitted, the current job is assumed. (See
1023 \fBJob Control\fR section below for more detail.)
1027 .ne 2
1029 \fB\fBgetopts\fR\fR
1031 .sp .6
1032 .RS 4n
1033 Use in shell scripts to support command syntax standards (see \fBIntro\fR(1)).
1034 This command parses positional parameters and checks for legal options. See
1035 \fBgetoptcvt\fR(1) for usage and description.
1039 .ne 2
1041 \fB\fBhash\fR [ \fB-r\fR ] [ \fIname\fR .\|.\|. ]\fR
1043 .sp .6
1044 .RS 4n
1045 For each \fIname\fR, the location in the search path of the command specified
1046 by \fIname\fR is determined and remembered by the shell. The \fB-r\fR option
1047 causes the shell to forget all remembered locations. If no arguments are given,
1048 information about remembered commands is presented. \fIHits\fR is the number of
1049 times a command has been invoked by the shell process. \fICost\fR is a measure
1050 of the work required to locate a command in the search path. If a command is
1051 found in a "relative" directory in the search path, after changing to that
1052 directory, the stored location of that command is recalculated. Commands for
1053 which this are done are indicated by an asterisk (\fB*\fR) adjacent to the
1054 \fIhits\fR information. \fICost\fR is incremented when the recalculation is
1055 done.
1059 .ne 2
1061 \fB\fBjobs\fR [\fB\fR\fB-p\fR\fB|\fR\fB-l\fR] [\fB%\fR\fIjobid ...\fR]\fR
1065 \fB\fBjobs\fR \fB-x\fR \fIcommand\fR [\fIarguments\fR]\fR
1067 .sp .6
1068 .RS 4n
1069 Reports all jobs that are stopped or executing in the background. If
1070 \fB%\fR\fIjobid\fR is omitted, all jobs that are stopped or running in the
1071 background are reported. (See \fBJob Control\fR section below for more detail.)
1075 .ne 2
1077 \fB\fBkill\fR [ \fB-\fR\fIsig\fR ] \fB%\fR\fIjob\fR .\|.\|.\fR
1081 \fB\fBkill\fR \fB-l\fR\fR
1083 .sp .6
1084 .RS 4n
1085 Sends either the \fBTERM\fR (terminate) signal or the specified signal to the
1086 specified jobs or processes. Signals are either given by number or by names (as
1087 given in \fBsignal.h\fR(3HEAD) stripped of the prefix "SIG" with the exception
1088 that \fBSIGCHD\fR is named \fBCHLD\fR). If the signal being sent is \fBTERM\fR
1089 (terminate) or \fBHUP\fR (hangup), then the job or process is sent a \fBCONT\fR
1090 (continue) signal if it is stopped. The argument \fIjob\fR can be the process
1091 id of a process that is not a member of one of the active jobs. See \fBJob
1092 Control\fR section below for a description of the format of \fIjob\fR. In the
1093 second form, \fBkill\fR \fB-l\fR, the signal numbers and names are listed. (See
1094 \fBkill\fR(1)).
1098 .ne 2
1100 \fB\fBlogin\fR [ \fIargument\fR .\|.\|. ]\fR
1102 .sp .6
1103 .RS 4n
1104 Equivalent to `\fBexec\fR \fBlogin\fR \fIargument\fR.\|.\|.\|.' See
1105 \fBlogin\fR(1) for usage and description.
1109 .ne 2
1111 \fB\fBnewgrp\fR [ \fIargument\fR ]\fR
1113 .sp .6
1114 .RS 4n
1115 Equivalent to \fBexec\fR \fBnewgrp\fR \fIargument\fR. See \fBnewgrp\fR(1) for
1116 usage and description.
1120 .ne 2
1122 \fB\fBpwd\fR\fR
1124 .sp .6
1125 .RS 4n
1126 Print the current working directory. See \fBpwd\fR(1) for usage and
1127 description.
1131 .ne 2
1133 \fB\fBread\fR \fIname\fR .\|.\|.\fR
1135 .sp .6
1136 .RS 4n
1137 One line is read from the standard input and, using the internal field
1138 separator, \fBIFS\fR (normally space or tab), to delimit word boundaries, the
1139 first word is assigned to the first \fIname\fR, the second word to the second
1140 \fIname\fR, and so forth, with leftover words assigned to the last \fIname\fR.
1141 Lines can be continued using \fB\enewline\fR\&. Characters other than
1142 \fBnewline\fR can be quoted by preceding them with a backslash. These
1143 backslashes are removed before words are assigned to \fInames\fR, and no
1144 interpretation is done on the character that follows the backslash. The return
1145 code is \fB0\fR, unless an \fBEOF\fR is encountered.
1149 .ne 2
1151 \fB\fBreadonly\fR [ \fIname\fR .\|.\|. ]\fR
1153 .sp .6
1154 .RS 4n
1155 The given \fIname\fRs are marked \fBreadonly\fR and the values of these
1156 \fIname\fRs can not be changed by subsequent assignment. If no arguments are
1157 given, a list of all \fBreadonly\fR names is printed.
1161 .ne 2
1163 \fB\fBreturn\fR [ \fIn\fR ]\fR
1165 .sp .6
1166 .RS 4n
1167 Causes a function to exit with the return value specified by \fIn\fR. If
1168 \fIn\fR is omitted, the return status is that of the last command executed.
1172 .ne 2
1174 \fB\fBset\fR [ \fB-aefhkntuvx\fR [ \fIargument\fR .\|.\|. ] ]\fR
1176 .sp .6
1177 .RS 4n
1179 .ne 2
1181 \fB\fB-a\fR\fR
1183 .RS 6n
1184 Mark variables which are modified or created for export.
1188 .ne 2
1190 \fB\fB-e\fR\fR
1192 .RS 6n
1193 Exit immediately if a command exits with a non-zero exit status.
1197 .ne 2
1199 \fB\fB-f\fR\fR
1201 .RS 6n
1202 Disable file name generation.
1206 .ne 2
1208 \fB\fB-h\fR\fR
1210 .RS 6n
1211 Locate and remember function commands as functions are defined (function
1212 commands are normally located when the function is executed).
1216 .ne 2
1218 \fB\fB-k\fR\fR
1220 .RS 6n
1221 All keyword arguments are placed in the environment for a command, not just
1222 those that precede the command name.
1226 .ne 2
1228 \fB\fB-n\fR\fR
1230 .RS 6n
1231 Read commands but do not execute them.
1235 .ne 2
1237 \fB\fB-t\fR\fR
1239 .RS 6n
1240 Exit after reading and executing one command.
1244 .ne 2
1246 \fB\fB-u\fR\fR
1248 .RS 6n
1249 Treat unset variables as an error when substituting.
1253 .ne 2
1255 \fB\fB-v\fR\fR
1257 .RS 6n
1258 Print shell input lines as they are read.
1262 .ne 2
1264 \fB\fB-x\fR\fR
1266 .RS 6n
1267 Print commands and their arguments as they are executed.
1271 .ne 2
1273 \fB\fB-\fR\fR
1275 .RS 6n
1276 Do not change any of the flags; useful in setting \fB$1\fR to \fB\(mi\fR\&.
1279 Using \fB+\fR rather than \fB\(mi\fR causes these flags to be turned off. These
1280 flags can also be used upon invocation of the shell. The current set of flags
1281 can be found in \fB$\(mi\fR. The remaining arguments are positional parameters
1282 and are assigned, in order, to \fB$1\fR, \fB$2\fR, .\|.\|. If no arguments are
1283 given, the values of all names are printed.
1287 .ne 2
1289 \fB\fBshift\fR [ \fIn\fR ]\fR
1291 .sp .6
1292 .RS 4n
1293 The positional parameters from \fB$\fR\fIn\fR\fB+1\fR .\|.\|. are renamed
1294 \fB$1\fR .\|.\|. . If \fIn\fR is not given, it is assumed to be 1.
1298 .ne 2
1300 \fB\fBstop\fR \fIpid .\|.\|.\fR\fR
1302 .sp .6
1303 .RS 4n
1304 Halt execution of the process number \fIpid\fR. (see \fBps\fR(1)).
1308 .ne 2
1310 \fB\fBsuspend\fR\fR
1312 .sp .6
1313 .RS 4n
1314 Stops the execution of the current shell (but not if it is the login shell).
1318 .ne 2
1320 \fB\fBtest\fR\fR
1322 .sp .6
1323 .RS 4n
1324 Evaluate conditional expressions. See \fBtest\fR(1) for usage and description.
1328 .ne 2
1330 \fB\fBtimes\fR\fR
1332 .sp .6
1333 .RS 4n
1334 Print the accumulated user and system times for processes run from the shell.
1338 .ne 2
1340 \fB\fBtrap\fR [ \fIargument\fR \fIn\fR [ \fIn2\fR .\|.\|. ]]\fR
1342 .sp .6
1343 .RS 4n
1344 The command \fIargument\fR is to be read and executed when the shell receives
1345 numeric or symbolic signal(s) (\fIn\fR). (\fBNote:\fR \fIargument\fR is scanned
1346 once when the trap is set and once when the trap is taken.) Trap commands are
1347 executed in order of signal number or corresponding symbolic names. Any attempt
1348 to set a trap on a signal that was ignored on entry to the current shell is
1349 ineffective. An attempt to trap on signal 11 (memory fault) produces an error.
1350 If \fIargument\fR is absent, all trap(s) \fIn\fR are reset to their original
1351 values. If \fIargument\fR is the null string, this signal is ignored by the
1352 shell and by the commands it invokes. If \fIn\fR is 0, the command
1353 \fIargument\fR is executed on exit from the shell. The \fBtrap\fR command with
1354 no arguments prints a list of commands associated with each signal number.
1358 .ne 2
1360 \fB\fBtype\fR [ \fIname\fR .\|.\|. ]\fR
1362 .sp .6
1363 .RS 4n
1364 For each \fIname\fR, indicate how it would be interpreted if used as a command
1365 name.
1369 .ne 2
1371 \fB\fBulimit\fR [ [\fB-HS\fR] [\fB-a\fR | \fB-cdfnstv\fR] ]\fR
1375 \fB\fBulimit\fR [ [\fB-HS\fR] [\fB-c\fR | \fB-d\fR | \fB-f\fR | \fB-n\fR |
1376 \fB-s\fR | \fB-t\fR | \fB-v\fR] ] \fBlimit\fR\fR
1378 .sp .6
1379 .RS 4n
1380 \fBulimit\fR prints or sets hard or soft resource limits. These limits are
1381 described in \fBgetrlimit\fR(2).
1383 If \fIlimit\fR is not present, \fBulimit\fR prints the specified limits. Any
1384 number of limits can be printed at one time. The \fB-a\fR option prints all
1385 limits.
1387 If \fIlimit\fR is present, \fBulimit\fR sets the specified limit to
1388 \fIlimit\fR. The string \fBunlimited\fR requests that the current limit, if
1389 any, be removed. Any user can set a soft limit  to any value less than or equal
1390 to  the hard limit. Any user can lower a hard limit.  Only a  user with
1391 appropriate privileges can raise or remove a hard limit.  See
1392 \fBgetrlimit\fR(2).
1394 The \fB-H\fR option specifies a hard limit. The \fB-S\fR option specifies a
1395 soft limit. If neither option is specified, \fBulimit\fR sets both limits and
1396 print the soft limit.
1398 The following options specify the resource whose limits are to be printed or
1399 set. If no option is specified, the file size limit is printed or set.
1401 .ne 2
1403 \fB\fB-c\fR\fR
1405 .RS 6n
1406 maximum core file size (in 512-byte blocks)
1410 .ne 2
1412 \fB\fB-d\fR\fR
1414 .RS 6n
1415 maximum size of data segment or heap (in kbytes)
1419 .ne 2
1421 \fB\fB-f\fR\fR
1423 .RS 6n
1424 maximum file size (in 512-byte blocks)
1428 .ne 2
1430 \fB\fB-n\fR\fR
1432 .RS 6n
1433 maximum file descriptor plus 1
1437 .ne 2
1439 \fB\fB-s\fR\fR
1441 .RS 6n
1442 maximum size of stack segment (in kbytes)
1446 .ne 2
1448 \fB\fB-t\fR\fR
1450 .RS 6n
1451 maximum CPU time (in seconds)
1455 .ne 2
1457 \fB\fB-v\fR\fR
1459 .RS 6n
1460 maximum size of virtual memory (in kbytes)
1463 Run the \fBsysdef\fR(1M) command to obtain the maximum possible limits for your
1464 system. The values reported are in hexadecimal, but can be translated into
1465 decimal numbers using the \fBbc\fR(1) utility. See \fBswap\fR(1M).)
1467 As an example of \fBulimit\fR, to limit the size of a core file dump to 0
1468 Megabytes, type the following:
1470 .in +2
1472 \fBulimit -c 0\fR
1474 .in -2
1480 .ne 2
1482 \fB\fBumask\fR [ \fInnn\fR ]\fR
1484 .sp .6
1485 .RS 4n
1486 The user file-creation mask is set to \fInnn\fR (see \fBumask\fR(1)). If
1487 \fInnn\fR is omitted, the current value of the mask is printed.
1491 .ne 2
1493 \fB\fBunset\fR [ \fIname\fR .\|.\|. ]\fR
1495 .sp .6
1496 .RS 4n
1497 For each \fIname\fR, remove the corresponding variable or function value. The
1498 variables \fBPATH\fR, \fBPS1\fR, \fBPS2\fR, \fBMAILCHECK\fR, and \fBIFS\fR
1499 cannot be unset.
1503 .ne 2
1505 \fB\fBwait\fR [ \fIn\fR ]\fR
1507 .sp .6
1508 .RS 4n
1509 Wait for your background process whose process id is \fIn\fR and report its
1510 termination status. If \fIn\fR is omitted, all your shell's currently active
1511 background processes are waited for and the return code is zero.
1514 .SS "Invocation"
1516 If the shell is invoked through \fBexec\fR(2) and the first character of
1517 argument zero is \fB\(mi\fR, commands are initially read from
1518 \fB/etc/profile\fR and from \fB$HOME/.profile\fR, if such files exist.
1519 Thereafter, commands are read as described below, which is also the case when
1520 the shell is invoked as \fB/usr/bin/sh\fR. The flags below are interpreted by
1521 the shell on invocation only. \fBNote:\fR Unless the \fB-c\fR or \fB-s\fR flag
1522 is specified, the first argument is assumed to be the name of a file containing
1523 commands, and the remaining arguments are passed as positional parameters to
1524 that command file:
1526 .ne 2
1528 \fB\fB-c\fR\fI\| string\fR\fR
1530 .RS 15n
1531 If the \fB-c\fR flag is present commands are read from \fIstring\fR.
1535 .ne 2
1537 \fB\fB-i\fR\fR
1539 .RS 15n
1540 If the \fB-i\fR flag is present or if the shell input and output are attached
1541 to a terminal, this shell is \fBinteractive\fR. In this case, TERMINATE is
1542 ignored (so that \fBkill 0\fR does not kill an interactive shell) and INTERRUPT
1543 is caught and ignored (so that \fBwait\fR is interruptible). In all cases, QUIT
1544 is ignored by the shell.
1548 .ne 2
1550 \fB\fB-p\fR\fR
1552 .RS 15n
1553 If the \fB-p\fR flag is present, the shell does not set the effective user and
1554 group IDs to the real user and group IDs.
1558 .ne 2
1560 \fB\fB-r\fR\fR
1562 .RS 15n
1563 If the \fB-r\fR flag is present the shell is a restricted shell (see
1564 \fBrsh\fR(1M)).
1568 .ne 2
1570 \fB\fB-s\fR\fR
1572 .RS 15n
1573 If the \fB-s\fR flag is present or if no arguments remain, commands are read
1574 from the standard input. Any remaining arguments specify the positional
1575 parameters. Shell output (except for \fBSpecial Commands\fR) is written to file
1576 descriptor 2.
1581 The remaining flags and arguments are described under the \fBset\fR command
1582 above.
1583 .SS "Job Control (jsh)"
1585 When the shell is invoked as \fBjsh\fR, Job Control is enabled in addition to
1586 all of the functionality described previously for \fBsh\fR. Typically, Job
1587 Control is enabled for the interactive shell only. Non-interactive shells
1588 typically do not benefit from the added functionality of Job Control.
1591 With Job Control enabled, every command or pipeline the user enters at the
1592 terminal is called a \fIjob\fR. All jobs exist in one of the following states:
1593 foreground, background, or stopped. These terms are defined as follows:
1594 .RS +4
1597 A job in the foreground has read and write access to the controlling
1598 terminal.
1600 .RS +4
1603 A job in the background is denied read access and has conditional write
1604 access to the controlling terminal (see \fBstty\fR(1)).
1606 .RS +4
1609 A stopped job is a job that has been placed in a suspended state, usually as
1610 a result of a \fBSIGTSTP\fR signal (see \fBsignal.h\fR(3HEAD)).
1614 Every job that the shell starts is assigned a positive integer, called a \fIjob
1615 number\fR which is tracked by the shell and is used as an identifier to
1616 indicate a specific job. Additionally, the shell keeps track of the
1617 \fIcurrent\fR and \fIprevious\fR jobs. The \fIcurrent job\fR is the most recent
1618 job to be started or restarted. The \fIprevious job\fR is the first non-current
1619 job.
1622 The acceptable syntax for a Job Identifier is of the form:
1625 \fB%\fR\fIjobid\fR
1628 where \fIjobid\fR can be specified in any of the following formats:
1630 .ne 2
1632 \fB\fB%\fR or \fB+\fR\fR
1634 .RS 13n
1635 For the current job.
1639 .ne 2
1641 \fB\fB\(mi\fR\fR
1643 .RS 13n
1644 For the previous job.
1648 .ne 2
1650 \fB\fB?\fR\fI<string>\fR\fR
1652 .RS 13n
1653 Specify the job for which the command line uniquely contains \fIstring\fR.
1657 .ne 2
1659 \fB\fIn\fR\fR
1661 .RS 13n
1662 For job number \fIn\fR.
1666 .ne 2
1668 \fB\fIpref\fR\fR
1670 .RS 13n
1671 Where \fIpref\fR is a unique prefix of the command name. For example, if the
1672 command \fBls\fR \fB-l\fR \fIname\fR were running in the background, it could
1673 be referred to as \fB%ls\fR. \fIpref\fR cannot contain blanks unless it is
1674 quoted.
1679 When Job Control is enabled, the following commands are added to the user's
1680 environment to manipulate jobs:
1682 .ne 2
1684 \fB\fBbg\fR [\fB%\fR\fIjobid .\|.\|.\fR]\fR
1686 .sp .6
1687 .RS 4n
1688 Resumes the execution of a stopped job in the background. If \fB%\fR\fIjobid\fR
1689 is omitted the current job is assumed.
1693 .ne 2
1695 \fB\fBfg\fR [\fB%\fR\fIjobid .\|.\|.\fR]\fR
1697 .sp .6
1698 .RS 4n
1699 Resumes the execution of a stopped job in the foreground, also moves an
1700 executing background job into the foreground. If \fB%\fR\fIjobid\fR is omitted
1701 the current job is assumed.
1705 .ne 2
1707 \fB\fBjobs\fR [\fB-p\fR|\fB-l\fR] [\fB%\fR\fIjobid .\|.\|.\fR]\fR
1711 \fB\fBjobs\fR \fB-x\fR \fBcommand\fR [\fIarguments\fR]\fR
1713 .sp .6
1714 .RS 4n
1715 Reports all jobs that are stopped or executing in the background. If
1716 \fB%\fR\fIjobid\fR is omitted, all jobs that are stopped or running in the
1717 background is reported. The following options modify/enhance the output of
1718 \fBjobs\fR:
1720 .ne 2
1722 \fB\fB-l\fR\fR
1724 .RS 6n
1725 Report the process group ID and working directory of the jobs.
1729 .ne 2
1731 \fB\fB-p\fR\fR
1733 .RS 6n
1734 Report only the process group ID of the jobs.
1738 .ne 2
1740 \fB\fB-x\fR\fR
1742 .RS 6n
1743 Replace any \fIjobid\fR found in \fIcommand\fR or \fIarguments\fR with the
1744 corresponding process group ID, and then execute \fIcommand\fR passing it
1745 \fIarguments\fR.
1751 .ne 2
1753 \fB\fBkill\fR [ \fB-signal\fR ] \fB%\fR\fIjobid\fR\fR
1755 .sp .6
1756 .RS 4n
1757 Builtin version of \fBkill\fR to provide the functionality of the \fBkill\fR
1758 command for processes identified with a \fIjobid\fR.
1762 .ne 2
1764 \fB\fBstop\fR \fB%\fR\fIjobid .\|.\|.\fR\fR
1766 .sp .6
1767 .RS 4n
1768 Stops the execution of a background job(s).
1772 .ne 2
1774 \fB\fBsuspend\fR\fR
1776 .sp .6
1777 .RS 4n
1778 Stops the execution of the current shell (but not if it is the login shell).
1782 .ne 2
1784 \fB\fBwait\fR [\fB%\fR\fIjobid .\|.\|.\fR]\fR
1786 .sp .6
1787 .RS 4n
1788 \fBwait\fR builtin accepts a job identifier. If \fB%\fR\fIjobid\fR is omitted
1789 \fBwait\fR behaves as described above under \fBSpecial Commands\fR.
1792 .SS "Large File Behavior"
1794 See \fBlargefile\fR(5) for the description of the behavior of \fBsh\fR and
1795 \fBjsh\fR when encountering files greater than or equal to 2 Gbyte ( 2^31
1796 bytes).
1797 .SH EXIT STATUS
1799 Errors detected by the shell, such as syntax errors, cause the shell to return
1800 a non-zero exit status. If the shell is being used non-interactively execution
1801 of the shell file is abandoned. Otherwise, the shell returns the exit status of
1802 the last command executed (see also the \fBexit\fR command above).
1803 .SS "jsh Only"
1805 If the shell is invoked as \fBjsh\fR and an attempt is made to exit the shell
1806 while there are stopped jobs, the shell issues one warning:
1809 \fBThere are stopped jobs.\fR
1812 This is the only message. If another exit attempt is made, and there are still
1813 stopped jobs they are sent a \fBSIGHUP\fR signal from the kernel and the shell
1814 is exited.
1815 .SH FILES
1817 \fB$HOME/.profile\fR
1820 \fB/dev/null\fR
1823 \fB/etc/profile\fR
1826 \fB/tmp/sh*\fR
1827 .SH ATTRIBUTES
1829 See \fBattributes\fR(5) for descriptions of the following attributes:
1830 .SS "/usr/bin/sh, /usr/bin/jsh"
1832 box;
1833 c | c
1834 l | l .
1835 ATTRIBUTE TYPE  ATTRIBUTE VALUE
1837 CSI     Enabled
1840 .SS "/usr/xpg4/bin/sh"
1842 box;
1843 c | c
1844 l | l .
1845 ATTRIBUTE TYPE  ATTRIBUTE VALUE
1847 CSI     Enabled
1850 .SH SEE ALSO
1852 \fBIntro\fR(1), \fBbc\fR(1), \fBecho\fR(1), \fBgetoptcvt\fR(1), \fBkill\fR(1),
1853 \fBksh\fR(1), \fBlogin\fR(1), \fBnewgrp\fR(1), \fBpfsh\fR(1), \fBpfexec\fR(1),
1854 \fBps\fR(1), \fBpwd\fR(1), \fBset\fR(1), \fBshell_builtins\fR(1),
1855 \fBstty\fR(1), \fBtest\fR(1), \fBumask\fR(1), \fBwait\fR(1), \fBrsh\fR(1M),
1856 \fBsu\fR(1M), \fBswap\fR(1M), \fBsysdef\fR(1M), \fBdup\fR(2), \fBexec\fR(2),
1857 \fBfork\fR(2), \fBgetrlimit\fR(2), \fBpipe\fR(2), \fBulimit\fR(2),
1858 \fBsetlocale\fR(3C), \fBsignal.h\fR(3HEAD), \fBpasswd\fR(4), \fBprofile\fR(4),
1859 \fBattributes\fR(5), \fBenviron\fR(5), \fBlargefile\fR(5), \fBXPG4\fR(5)
1860 .SH WARNINGS
1862 The use of \fBsetuid\fR shell scripts is \fBstrongly\fR discouraged.
1863 .SH NOTES
1865 Words used for filenames in input/output redirection are not interpreted for
1866 filename generation (see \fBFile Name Generation\fR section above). For
1867 example, \fBcat file1 >a*\fR createsa file named \fBa*\fR.
1870 Because commands in pipelines are run as separate processes, variables set in a
1871 pipeline have no effect on the parent shell.
1874 If the input or the output of a \fBwhile\fR or \fBuntil\fR loop is redirected,
1875 the commands in the loop are run in a sub-shell, and variables set or changed
1876 there have no effect on the parent process:
1878 .in +2
1880    lastline=
1881    while read line
1882    do
1884            lastline=$line
1885    done < /etc/passwd
1886    echo "lastline=$lastline"       # lastline is empty!
1888 .in -2
1893 In these cases, the input or output can be redirected by using \fBexec\fR, as
1894 in the following example:
1896 .in +2
1898    # Save standard input (file descriptor 0) as file
1899    # descriptor 3, and redirect standard input from the file
1900    /etc/passwd:
1902    exec 3<&0               # save standard input as fd 3
1903    exec </etc/passwd       # redirect input from file
1905    lastline=
1906    while read line
1907    do
1908            lastline=$line
1909    done
1911    exec 0<&3               # restore standard input
1912    exec 3<&-               # close file descriptor 3
1913    echo "$lastline"        # lastline
1915 .in -2
1920 If you get the error message, "\fBcannot fork, too many processes\fR", try
1921 using the \fBwait\fR(1) command to clean up your background processes. If this
1922 doesn't help, the system process table is probably full or you have too many
1923 active foreground processes. There is a limit to the number of process ids
1924 associated with your login, and to the number the system can keep track of.
1927 Only the last process in a pipeline can be waited for.
1930 If a command is executed, and a command with the same name is installed in a
1931 directory in the search path before the directory where the original command
1932 was found, the shell continues to \fBexec\fR the original command. Use the
1933 \fBhash\fR command to correct this situation.
1936 The Bourne shell has a limitation on the effective \fBUID\fR for a process. If
1937 this \fBUID\fR is less than 100 (and not equal to the real UID of the process),
1938 then the \fBUID\fR is reset to the real UID of the process.
1941 Because the shell implements both foreground and background jobs in the same
1942 process group, they all receive the same signals, which can lead to unexpected
1943 behavior. It is, therefore, recommended that other job control shells be used,
1944 especially in an interactive environment.
1947 When the shell executes a shell script that attempts to execute a non-existent
1948 command interpreter, the shell returns an erroneous diagnostic message that the
1949 shell script file does not exist.