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