1 KSH93(1) User Commands KSH93(1)
2
3
4
5 NAME
6 ksh93, rksh93 - Korn Shell, a standard and restricted command and
7 programming language
8
9 SYNOPSIS
10 ksh93 [+-abcefhikmnoprstuvxBCD] [-R file] [ +-o option] ...
11 [-] [arg ...]
12
13
14 rksh93 [+-abcefhikmnoprstuvxBCD] [-R file] [+-o option] ...
15 [-] [arg ...]
16
17
18 DESCRIPTION
19 ksh93 is a command and programming language that executes commands read
20 from a terminal or a file. rksh93 is a restricted version of the
21 command interpreter ksh93. rksh93 is used to set up login names and
22 execution environments whose capabilities are more controlled than
23 those of the standard shell.
24
25
26 See Invocation for the meaning of arguments to the shell.
27
28 Definitions
29 A metacharacter is defined as one of the following characters:
30
31 ; & ( ) | < > NEWLINE SPACE TAB
32
33
34
35
36 A blank is a TAB or a SPACE.
37
38
39 An identifier is a sequence of letters, digits, or underscores starting
40 with a letter or underscore. Identifiers are used as components of
41 variable names.
42
43
44 A vname is a sequence of one or more identifiers separated by a period
45 (.) and optionally preceded by a period (.). vnames are used as
46 function and variable names.
47
48
49 A word is a sequence of characters from the character set defined by
50 the current locale, excluding non-quoted metacharacters.
51
52
53 A command is a sequence of characters in the syntax of the shell
54 language. The shell reads each command and carries out the desired
55 action either directly or by invoking separate utilities. A built-in
56 command is a command that is carried out by the shell itself without
57 creating a separate process. Some commands are built-in purely for
58 convenience and are not documented in this manual page. Built-ins that
59 cause side effects in the shell environment and built-ins that are
60 found before performing a path search (see Execution) are documented in
61 this manual page. For historical reasons, some of these built-ins
62 behave differently than other built-ins and are called special built-
63 ins.
64
65 Commands
66 A simple-command is a list of variable assignments (see Variable
67 Assignments) or a sequence of blank-separated words which can be
68 preceded by a list of variable assignments. See the Environment section
69 of this manual page.
70
71
72 The first word specifies the name of the command to be executed. Except
73 as specified in this section, the remaining words are passed as
74 arguments to the invoked command. The command name is passed as
75 argument 0. See exec(2). The value of a simple-command is its exit
76 status. If it terminates normally, its value is 0-255. If it terminates
77 abnormally, its value is 256+signum. The name of the signal
78 corresponding to the exit status can be obtained by way of the -l
79 option of the kill built-in utility.
80
81
82 A pipeline is a sequence of one or more commands separated by |. The
83 standard output of each command but the last is connected by a pipe(2)
84 to the standard input of the next command. Each command, except
85 possibly the last, is run as a separate process. The shell waits for
86 the last command to terminate. The exit status of a pipeline is the
87 exit status of the last command unless the pipefail option is enabled.
88 Each pipeline can be preceded by the reserved word!. This causes the
89 exit status of the pipeline to become 0 if the exit status of the last
90 command is non-zero, and 1 if the exit status of the last command is 0.
91
92
93 A list is a sequence of one or more pipelines separated by ;, &, |&,
94 &&, or |, and optionally terminated by ;, &, or |&. Of these five
95 symbols, ;, &, and |& have equal precedence, which is lower than that
96 of && and ||. The symbols && and || also have equal precedence.
97
98
99 A semicolon (;) causes sequential execution of the preceding pipeline.
100 An ampersand (&) causes asynchronous execution of the preceding
101 pipeline, that is, the shell does not wait for that pipeline to finish.
102 The symbol |& causes asynchronous execution of the preceding pipeline
103 with a two-way pipe established to the parent shell. The standard input
104 and output of the spawned pipeline can be written to and read from by
105 the parent shell by applying the redirection operators <& and >& with
106 arg p to commands and by using -p option of the built-in commands read
107 and print. The symbol && (||) causes the list following it to be
108 executed only if the preceding pipeline returns a zero (non-zero)
109 value. One or more NEWLINEs can appear in a list instead of a
110 semicolon, to delimit a command. The first item of the first pipeline
111 of a list that is a simple command not beginning with a redirection,
112 and not occurring within a while, until, or if list , can be preceded
113 by a semicolon. This semicolon is ignored unless the showme option is
114 enabled as described with the set built-in.
115
116
117 A command is either a simple-command or one of commands in the
118 following list. Unless otherwise stated, the value returned by a
119 command is that of the last simple-command executed in the command.
120
121 for vname [ in word ... ] ;do list ;done
122
123 Each time a for command is executed, vname is set to the next word
124 taken from the in word list. If in word ... is omitted, the for
125 command executes the do list once for each positional parameter
126 that is set starting from 1. Execution ends when there are no more
127 words in the list. See Parameter Expansion.
128
129
130 for (( [expr1] ; [expr2] ; [expr3] )) ;do list ;done
131
132 The arithmetic expression expr1 is evaluated first. The arithmetic
133 expression expr2 is repeatedly evaluated until it evaluates to zero
134 and when non-zero, list is executed and the arithmetic expression
135 expr3 evaluated. If any expression is omitted, then it behaves as
136 if it evaluated to 1. See Arithmetic Evaluation.
137
138
139 select vname [ in word ... ] ;do list ;done
140
141 A select command prints on standard error (file descriptor 2) the
142 set of words, each preceded by a number. If in word... is omitted,
143 the positional parameters starting from 1 are used instead. See
144 Parameter Expansion. The PS3 prompt is printed and a line is read
145 from the standard input. If this line consists of the number of one
146 of the listed words, then the value of the variable vname is set to
147 the word corresponding to this number. If this line is empty, the
148 selection list is printed again. Otherwise the value of the
149 variable vname is set to null. The contents of the line read from
150 standard input is saved in the variable REPLY. The list is executed
151 for each selection until a break or EOF is encountered. If the
152 REPLY variable is set to null by the execution of list, the
153 selection list is printed before displaying the PS3 prompt for the
154 next selection.
155
156
157 case word in [ [(] pattern [ | pattern ] ... ) list ;; ] ... esac
158
159 A case command executes the list associated with the first pattern
160 that matches word. The form of the patterns is the same as that
161 used for file name generation. See File Name Generation.
162
163 The ;; operator causes execution of case to terminate. If ;& is
164 used in place of ;; the next subsequent list, if any, is executed.
165
166
167 if list ;then list [ ;elif list ;then list ] ... [ ;else list ] ;fi
168
169 The list following if is executed and, if it returns a zero exit
170 status, the list following the first then is executed. Otherwise,
171 the list following elif is executed, and, if its value is zero, the
172 list following the next then is executed. Failing each successive
173 elif list, the else list is executed. If the if list has non-zero
174 exit status and there is no else list, then the if command returns
175 a zero exit status.
176
177
178 while list ;do list ;done
179 until list ;do list ;done
180
181 A while command repeatedly executes the while list and, if the exit
182 status of the last command in the list is zero, executes the do
183 list, otherwise the loop terminates. If no commands in the do list
184 are executed, then the while command returns a zero exit status,
185 until can be used in place of while to negate the loop termination
186 test.
187
188
189 ((expression))
190
191 The expression is evaluated using the rules for arithmetic
192 evaluation described in this manual page. If the value of the
193 arithmetic expression is non-zero, the exit status is 0. Otherwise
194 the exit status is 1.
195
196
197 (list)
198
199 Execute list in a separate environment. If two adjacent open
200 parentheses are needed for nesting, a SPACE must be inserted to
201 avoid evaluation as an arithmetic command as described in this
202 section.
203
204
205 { list;}
206
207 list is simply executed. Unlike the metacharacters, ( and ), { and
208 } are reserved words and must occur at the beginning of a line or
209 after a ; to be recognized.
210
211
212 [[ expression ]]
213
214 Evaluates expression and returns a zero exit status when expression
215 is true. See Conditional Expressions for a description of
216 expression.
217
218
219 function varname { list ;}
220 varname () { list ;}
221
222 Define a function which is referenced by varname. A function whose
223 varname contains a dot (.) is called a discipline function and the
224 portion of the varname preceding the last . must refer to an
225 existing variable.
226
227 The body of the function is the list of commands between { and }. A
228 function defined with the function varname syntax can also be used
229 as an argument to the . special built-in command to get the
230 equivalent behavior as if the varname() syntax were used to define
231 it. See Functions.
232
233
234 namespace identifier { list };
235
236 Defines or uses the name space identifier and runs the commands in
237 list in this name space. See Name Spaces.
238
239
240 time [ pipeline ]
241
242 If pipeline is omitted, the user and system time for the current
243 shell and completed child processes is printed on standard error.
244 Otherwise, pipeline is executed and the elapsed time as well as the
245 user and system time are printed on standard error. The TIMEFORMAT
246 variable can be set to a format string that specifies how the
247 timing information should be displayed. See Shell Variables for a
248 description of the TIMEFORMAT variable.
249
250
251
252 The following reserved words are recognized as reserved only when they
253 are the first word of a command and are not quoted:
254
255 case
256 do
257 done
258 else
259 elif
260 esac
261 for
262 fi
263 function
264 if
265 select
266 then
267 time
268 until
269 while
270 { }
271 [[ ]]
272 !
273
274 Variable Assignments
275 One or more variable assignments can start a simple command or can be
276 arguments to the typeset, enum, export, or readonly special built-in
277 commands. The syntax for an assignment is of the form:
278
279 varname=word
280 varname[word]=word
281
282 No space is permitted between varname and the = or between = and
283 word. The variable varname is unset before the assignment.
284
285
286 varname=(assignlist)
287
288 No space is permitted between varname and the =. An assignlist can
289 be one of the following:
290
291 word ...
292
293 Indexed array assignment.
294
295
296 [word]=word ...
297
298 Associative array assignment. If prefixed by typeset -a,
299 creates an indexed array instead.
300
301
302 assignment ...
303
304 Compound variable assignment. This creates a compound variable
305 varname with sub-variables of the form varname.name, where name
306 is the name portion of assignment. The value of varname
307 contains all the assignment elements. Additional assignments
308 made to sub-variables of varname are also displayed as part of
309 the value of varname. If no assignments are specified, varname
310 is a compound variable allowing subsequence child elements to
311 be defined.
312
313
314 typeset [options] assignment ...
315
316 Nested variable assignment. Multiple assignments can be
317 specified by separating each of them with a ;. The previous
318 value is unset before the assignment.
319
320
321 . filename
322
323 Include the assignment commands contained in filename.
324
325 In addition, a += can be used in place of the = to signify adding
326 to or appending to the previous value. When += is applied to an
327 arithmetic type, word is evaluated as an arithmetic expression and
328 added to the current value. When applied to a string variable, the
329 value defined by word is appended to the value. For compound
330 assignments, the previous value is not unset and the new values are
331 appended to the current ones provided that the types are
332 compatible.
333
334 The right hand side of a variable assignment undergoes all the
335 expansion listed below except word splitting, brace expansion, and
336 file name generation. When the left hand side is an assignment is
337 a compound variable and the right hand is the name of a compound
338 variable, the compound variable on the right will be copied or
339 appended to the compound variable on the left.
340
341
342
343 Comments
344 A word beginning with # causes that word and all the following
345 characters up to a NEWLINE to be commented, or ignored.
346
347 Aliasing
348 The first word of each command is replaced by the text of an alias if
349 an alias for this word has been defined. An alias name consists of any
350 number of characters excluding metacharacters, quoting characters, file
351 expansion characters, parameter expansion characters, command
352 substitution characters, the characters / and =. The replacement string
353 can contain any valid shell script including the metacharacters listed
354 in the Commands section. The first word of each command in the replaced
355 text, other than any that are in the process of being replaced, are
356 tested for aliases. If the last character of the alias value is a BLANK
357 then the word following the alias is also checked for alias
358 substitution.
359
360
361 Aliases can be used to redefine built-in commands but cannot be used to
362 redefine the reserved words listed in the Commands section. Aliases can
363 be created and listed with the alias command and can be removed with
364 the unalias command.
365
366
367 Aliasing is performed when scripts are read, not while they are
368 executed. For an alias to take effect, the alias definition command has
369 to be executed before the command which references the alias is read.
370 The following aliases are compiled into the shell but can be unset or
371 redefined:
372
373 autoload='typeset -fu'
374 command='command '
375 compound='typeset -C'
376 fc=hist
377 float='typeset -lE'
378 functions='typeset -f'
379 hash='alias -t --'
380 history='hist -l'
381 integer='typeset -li'
382 nameref='typeset -n'
383 nohup='nohup '
384 r='hist -s'
385 redirect='command exec'
386 source='command .'
387 stop='kill -s STOP'
388 suspend='kill -s STOP $$'
389 times='{ { time;} 2>&1;}'
390 type='whence -v'
391
392
393
394 Tilde Substitution
395 After alias substitution is performed, each word is checked to see if
396 it begins with an unquoted tilde (~). For tilde substitution, word also
397 refers to the word portion of parameter expansion. See Parameter
398 Expansion.
399
400
401 If it does, the word up to a / is checked to see if it matches a user
402 name in the password database. If a match is found, the ~ and the
403 matched login name are replaced by the login directory of the matched
404 user. If no match is found, the original text is left unchanged. A ~ by
405 itself, or in front of a /, is replaced by $HOME. A ~ followed by a +
406 or - is replaced by the value of $PWD and $OLDPWD respectively.
407
408
409 In addition, when expanding a variable assignment, tilde substitution
410 is attempted when the value of the assignment begins with a ~, and when
411 a ~ appears after a colon (:). The : also terminates a ~ login name.
412
413 Command Substitution
414 The standard output from a command enclosed in parentheses preceded by
415 a dollar sign ( $(list) ), or in a brace group preceded by a dollar
416 sign ( ${ list;} ), or in a pair of grave accents (``) can be used as
417 part or all of a word. Trailing NEWLINEs are removed. In the second
418 case, the { and } are treated as a reserved words so that { must be
419 followed by a blank and } must appear at the beginning of the line or
420 follow a ;. In the third (obsolete) form, the string between the quotes
421 is processed for special quoting characters before the command is
422 executed. See Quoting.
423
424
425 The command substitution $(cat file) can be replaced by the equivalent
426 but faster $(<file). The command substitution $(n<#) expands to the
427 current byte offset for file descriptor n. Except for the second form,
428 the command list is run in a subshell so that no side effects are
429 possible. For the second form, the final } will be recognized as a
430 reserved word after any token.
431
432 Arithmetic Substitution
433 An arithmetic expression enclosed in double parentheses preceded by a
434 dollar sign ( $((arithmetic_expression))) is replaced by the value of
435 the arithmetic expression within the double parentheses.
436
437 Process Substitution
438 Each command argument of the form <(list) or >(list) runs process list
439 asynchronously connected to some file in /dev/fd. The name of this file
440 becomes the argument to the command. If the form with > is selected
441 then writing on this file provides input for list. If < is used, then
442 the file passed as an argument contains the output of the list process.
443
444
445 For example,
446
447 paste <(cut -f1 file1) <(cut -f3 file2) | tee \
448 >(process1) >(process2)
449
450
451
452
453 cuts fields 1 and 3 from the files file1 and file2 respectively, pastes
454 the results together, and sends it to the processes process1 and
455 process2. It also displays the results to the standard output. The
456 file, which is passed as an argument to the command, is a UNIX pipe(2).
457 Programs that expect to lseek(2) on the file do not work.
458
459 Process substitution of the form <(list) can also be used with the <
460 redirection operator which causes the output of list to be standard
461 input or the input for whatever file descriptor is specified.
462
463 Parameter Expansion
464 A parameter is a variable, one or more digits, or any of the characters
465 *, @, #, ?, -, $, and !. A variable is denoted by a vname. To create a
466 variable whose vname contains a ., a variable whose vname consists of
467 everything before the last . must already exist. A variable has a value
468 and zero or more attributes. Variables can be assigned values and
469 attributes by using the typeset special built-in command. The
470 attributes supported by the shell are described later with the typeset
471 special built-in command. Exported variables pass values and attributes
472 to the environment.
473
474
475 The shell supports both indexed and associative arrays. An element of
476 an array variable is referenced by a subscript. A subscript for an
477 indexed array is denoted by an arithmetic expression, (see Arithmetic
478 Evaluation), between a [ and a ]. To assign values to an indexed
479 array, use vname=(value ...) or set -A vname value ... . The value of
480 all subscripts must be in the range of 0 through 4,194,303. A negative
481 subscript is treated as an offset from the maximum current index +1 so
482 that -1 refers to the last element. Indexed arrays can be declared
483 with the -a option to typeset. Indexed arrays need not be declared. Any
484 reference to a variable with a valid subscript is legal and an array
485 will be created if necessary.
486
487
488 An associative array is created with the -A option to typeset. A
489 subscript for an associative array is denoted by a string enclosed
490 between [ and ].
491
492
493 Referencing any array without a subscript is equivalent to referencing
494 the array with subscript 0.
495
496
497 The value of a variable can be assigned by:
498
499 vname=value [vname=value] ...
500
501
502
503
504 or
505
506 vname[subscript]=value [vname[subscript]=value] ...
507
508 Note that no space is allowed before or after the =.
509
510 Attributes assigned by the typeset special built-in command apply to
511 all elements of the array. An array element can be a simple variable,
512 a compound variable or an array variable. An element of an indexed
513 array can be either an indexed array or an associative array. An
514 element of an associative array can also be either. To refer to an
515 array element that is part of an array element, concatenate the
516 subscript in brackets. For example, to refer to the foobar element of
517 an associative array that is defined as the third element of the
518 indexed array, use ${vname[3][foobar]}
519
520
521 A nameref is a variable that is a reference to another variable. A
522 nameref is created with the -n attribute of typeset. The value of the
523 variable at the time of the typeset command becomes the variable that
524 is referenced whenever the nameref variable is used. The name of a
525 nameref cannot contain a dot (.). When a variable or function name
526 contains a dot (.) and the portion of the name up to the first .
527 matches the name of a nameref, the variable referred to is obtained by
528 replacing the nameref portion with the name of the variable referenced
529 by the nameref. If a nameref is used as the index of a for loop, a name
530 reference is established for each item in the list. A nameref provides
531 a convenient way to refer to the variable inside a function whose name
532 is passed as an argument to a function. For example, if the name of a
533 variable is passed as the first argument to a function, the command
534
535 typeset -n var=$1
536
537
538
539
540 inside the function causes references and assignments to var to be
541 references and assignments to the variable whose name has been passed
542 to the function. If any of the floating point attributes, -E,-F or -X,
543 or the integer attribute, -i, is set for vname, then the value is
544 subject to arithmetic evaluation as described in this manual page.
545 Positional parameters, parameters denoted by a number, can be assigned
546 values with the set special built-in command. Parameter $0 is set from
547 argument zero when the shell is invoked.
548
549 The character $ is used to introduce substitutable parameters.
550
551 ${parameter}
552
553 The shell reads all the characters from ${ to the matching } as
554 part of the same word even if it contains braces or metacharacters.
555 The value, if any, of the parameter is substituted. The braces are
556 required when parameter is followed by a letter, digit, or
557 underscore that is not to be interpreted as part of its name or
558 when the variable name contains a dot (.). The braces are also
559 required when a variable is subscripted unless it is part of an
560 Arithmetic Expression or a Conditional Expression. If parameter is
561 one or more digits then it is a positional parameter. A positional
562 parameter of more than one digit must be enclosed in braces. If
563 parameter is * or @, then all the positional parameters, starting
564 with $1, are substituted and separated by a field separator
565 character. If an array vname with last subscript * or @ is used, or
566 for index arrays of the form sub1 .. sub2 is used, then the value
567 for each of the elements between sub1 and sub2 inclusive (or all
568 elements for * and @) is substituted, separated by the first
569 character of the value of IFS.
570
571
572 ${#parameter}
573
574 If parameter is * or @, the number of positional parameters is
575 substituted. Otherwise, the length of the value of the parameter is
576 substituted.
577
578
579 ${#vname[*]}
580 ${#vname[@]}
581
582 The number of elements in the array vname is substituted.
583
584 ${@vname}
585
586 Expands to the type name or attributes of the variable referred to
587 by vname. See Type Variables.
588
589
590 ${!vname}
591
592 Expands to the name of the variable referred to by vname. This is
593 vname except when vname is a name reference.
594
595
596 ${!vname[subscript]}
597
598 Expands to name of the subscript unless subscript is * or @, or of
599 the form sub1 .. sub2. When subscript is *, the list of array
600 subscripts for vname is generated. For a variable that is not an
601 array, the value is 0 if the variable is set, otherwise it is null.
602 When subscript is @, it is the same as $ {vname[*]}, except that
603 when used in double quotes, each array subscript yields a separate
604 argument. When subscript is of the form sub1 .. sub2 it expands to
605 the list of subscripts between sub1 and sub2 inclusive using the
606 same quoting rules as @.
607
608
609 ${!prefix*}
610
611 Expands to the names of the variables whose names begin with
612 prefix.
613
614
615 ${parameter:-word}
616
617 If parameter is set and is non-null then substitute its value.
618 Otherwise substitute word.
619
620
621 ${parameter:=word}
622
623 If parameter is not set or is null, set it to word. The value of
624 the parameter is then substituted. Positional parameters cannot be
625 assigned to in this way.
626
627
628 ${parameter:?word}
629
630 If parameter is set and is non-null, substitute its value.
631 Otherwise, print word and exit from the shell , if the shell is not
632 interactive. If word is omitted then a standard message is printed.
633
634
635 ${parameter:+word}
636
637 If parameter is set and is non-null, substitute word. Otherwise
638 substitute nothing.
639
640 In the above, word is not evaluated unless it is to be used as the
641 substituted string. In the following example, pwd is executed only if d
642 is not set or is NULL:
643
644 print ${d:-$(pwd)}
645
646
647 If the colon (:) is omitted from the expression, the shell only checks
648 whether parameter is set or not.
649
650
651 ${parameter:offset:length}
652 ${parameter:offset}
653
654 Expands to the portion of the value of parameter starting at the
655 character (counting from 0) determined by expanding offset as an
656 arithmetic expression and consisting of the number of characters
657 determined by the arithmetic expression defined by length.
658
659 In the second form, the remainder of the value is used. A negative
660 offset counts backwards from the end of parameter.
661
662 One or more BLANKs is required in front of a minus sign to prevent
663 the shell from interpreting the operator as :-. If parameter is *
664 or @, or is an array name indexed by * or @, then offset and length
665 refer to the array index and number of elements respectively. A
666 negative offset is taken relative to one greater than the highest
667 subscript for indexed arrays. The order for associative arrays is
668 unspecified.
669
670
671 ${parameter#pattern}
672 ${parameter##pattern}
673
674 If the shell pattern matches the beginning of the value of
675 parameter, then the value of this expansion is the value of the
676 parameter with the matched portion deleted. Otherwise the value of
677 this parameter is substituted. In the first form the smallest
678 matching pattern is deleted and in the second form the largest
679 matching pattern is deleted. When parameter is @, *, or an array
680 variable with subscript @ or *, the substring operation is applied
681 to each element in turn.
682
683
684 ${parameter%pattern}
685 ${parameter%%pattern}
686
687 If the shell pattern matches the end of the value of parameter,
688 then the value of this expansion is the value of the parameter with
689 the matched part deleted. Otherwise substitute the value of
690 parameter. In the first form the smallest matching pattern is
691 deleted, and in the second form the largest matching pattern is
692 deleted. When parameter is @, *, or an array variable with
693 subscript @ or *, the substring operation is applied to each
694 element in turn.
695
696
697 ${parameter/pattern/string}
698 ${parameter//pattern/string}
699 ${parameter/#pattern/string}
700 ${parameter/%pattern/string}
701
702 Expands parameter and replaces the longest match of pattern with
703 the specified string. Each occurrence of \n in string is replaced
704 by the portion of parameter that matches the nth sub-pattern.
705
706 When string is null, the pattern is deleted and the / in front of
707 string can be omitted. When parameter is @, *, or an array variable
708 with subscript @ or *, the substitution operation is applied to
709 each element in turn. In this case, the string portion of word is
710 re-evaluated for each element.
711
712 In the first form, only the first occurrence of pattern is
713 replaced.
714
715 In the second form, each match for pattern is replaced by the
716 specified string.
717
718 The third form restricts the pattern match to the beginning of the
719 string.
720
721 The fourth form restricts the pattern match to the end of the
722 string.
723
724
725
726 The following parameters are automatically set by the shell:
727
728 #
729 The number of positional parameters in decimal.
730
731
732 -
733 Options supplied to the shell on invocation or by
734 the set command.
735
736
737 ?
738 The decimal value returned by the last executed
739 command.
740
741
742 $
743 The process number of this shell.
744
745
746 _
747 Initially, the value of _ is the absolute pathname
748 of the shell or script being executed as passed in
749 the environment. It is subsequently assigned the
750 last argument of the previous command.
751
752 This parameter is not set for commands which are
753 asynchronous. This parameter is also used to hold
754 the name of the matching MAIL file when checking for
755 mail.
756
757
758 !
759 The process id or the pool name and job number of
760 the last background command invoked or the most
761 recent job put in the background with the bg built-
762 in command. Background jobs started in a named pool
763 with be in the form pool.number where pool is the
764 pool name and number is the job number within that
765 pool.
766
767
768 .sh.command
769 When processing a DEBUG trap, this variable contains
770 the current command line that is about to run.
771
772
773 .sh.edchar
774 This variable contains the value of the keyboard
775 character (or sequence of characters if the first
776 character is an ESC, ASCII 033) that has been
777 entered when processing a KEYBD trap. If the value
778 is changed as part of the trap action, then the new
779 value replaces the key (or key sequence) that caused
780 the trap. See the Key Bindings section of this
781 manual page.
782
783
784 .sh.edcol
785 The character position of the cursor at the time of
786 the most recent KEYBD trap.
787
788
789 .sh.edmode
790 The value is set to ESC when processing a KEYBD trap
791 while in vi insert mode. Otherwise, .sh.edmode is
792 null when processing a KEYBD trap. See the vi
793 Editing Mode section of this manual page.
794
795
796 .sh.edtext
797 The characters in the input buffer at the time of
798 the most recent KEYBD trap. The value is null when
799 not processing a KEYBD trap.
800
801
802 .sh.file
803 The pathname of the file than contains the current
804 command.
805
806
807 .sh.fun
808 The name of the current function that is being
809 executed.
810
811
812 .sh.match
813 An indexed array which stores the most recent match
814 and sub-pattern matches after conditional pattern
815 matches that match and after variables expansions
816 using the operators #, %, or /. The 0th element
817 stores the complete match and the ith element stores
818 the ith sub-match. The .sh.match variable is unset
819 when the variable that has expanded is assigned a
820 new value.
821
822
823 .sh.math
824 Used for defining arithmetic functions (see
825 Arithmetic evaluation) and stores the list of user-
826 defined arithmetic functions.
827
828
829 .sh.name
830 Set to the name of the variable at the time that a
831 discipline function is invoked.
832
833
834 .sh.subscript
835 Set to the name subscript of the variable at the
836 time that a discipline function is invoked.
837
838
839 .sh.subshell
840 The current depth for sub-shells and command
841 substitution.
842
843
844 .sh.value
845 Set to the value of the variable at the time that
846 the set or append discipline function is invoked.
847 When a user-defined arithmetic function is invoked,
848 the value of .sh.value is saved and .sh.value is set
849 to long double precision floating point. .sh.value
850 is restored when the function returns.
851
852
853 .sh.version
854 Set to a value that identifies the version of this
855 shell.
856
857
858 LINENO
859 The current line number within the script or
860 function being executed.
861
862
863 OLDPWD
864 The previous working directory set by the cd
865 command.
866
867
868 OPTARG
869 The value of the last option argument processed by
870 the getopts built-in command.
871
872
873 OPTIND
874 The index of the last option argument processed by
875 the getopts built-in command.
876
877
878 PPID
879 The process number of the parent of the shell.
880
881
882 PWD
883 The present working directory set by the cd command.
884
885
886 RANDOM
887 Each time this variable is referenced, a random
888 integer, uniformly distributed between 0 and 32767,
889 is generated. The sequence of random numbers can be
890 initialized by assigning a numeric value to RANDOM.
891
892
893 REPLY
894 This variable is set by the select statement and by
895 the read built-in command when no arguments are
896 supplied.
897
898
899 SECONDS
900 Each time this variable is referenced, the number of
901 seconds since shell invocation is returned. If this
902 variable is assigned a value, then the value
903 returned upon reference is the value that was
904 assigned plus the number of seconds since the
905 assignment.
906
907
908 SHLVL
909 An integer variable the is incremented each time the
910 shell is invoked and is exported. If SHLVL is not
911 in the environment when the shell is invoked, it is
912 set to 1.
913
914
915
916 The following variables are used by the shell:
917
918 CDPATH
919 Defines the search path for the cd command.
920
921
922 COLUMNS
923 Defines the width of the edit window for the shell edit
924 modes and for printing select lists.
925
926
927 EDITOR
928 If the VISUAL variable is not set, the value of this
929 variable is checked for the patterns as described with
930 VISUAL and the corresponding editing option is turned on.
931
932 See the set command in the Special Command section of
933 this manual page.
934
935
936 ENV
937 Performs parameter expansion, command substitution, and
938 arithmetic substitution on the value to generate the
939 pathname of the script that is executed when the shell is
940 invoked. This file is typically used for alias and
941 function definitions. The default value is $HOME/.kshrc.
942
943 See the Invocation section of this manual page.
944
945 ENV is not set by the shell.
946
947
948 FCEDIT
949 Obsolete name for the default editor name for the hist
950 command. FCEDIT is not used when HISTEDIT is set.
951
952 The shell specifies a default value to FCEDIT.
953
954
955 FIGNORE
956 A pattern that defines the set of file names that is
957 ignored when performing file name matching.
958
959
960 FPATH
961 The search path for function definitions. The directories
962 in this path are searched for a file with the same name
963 as the function or command when a function with the -u
964 attribute is referenced and when a command is not found.
965 If an executable file with the name of that command is
966 found, then it is read and executed in the current
967 environment. Unlike PATH, the current directory must be
968 represented explicitly by dot (.) rather than by adjacent
969 colon (:) characters or a beginning or ending colon (:).
970
971
972 HISTCMD
973 The number of the current command in the history file.
974
975
976 HISTEDIT
977 The name for the default editor name for the hist
978 command.
979
980
981 HISTFILE
982 If this variable is set when the shell is invoked, the
983 value is the pathname of the file that is used to store
984 the command history. See the Command Re-entry section of
985 this manual page.
986
987
988 HISTSIZE
989 If this variable is set when the shell is invoked, then
990 the number of previously entered commands that are
991 accessible by this shell is greater than or equal to this
992 number. The default is 512.
993
994
995 HOME
996 The default argument (home directory) for the cd command.
997
998 HOME is not set by the shell. HOME is set by login(1).
999
1000
1001 IFS
1002 Internal field separators, normally SPACE, TAB, and
1003 NEWLINE that are used to separate the results of command
1004 substitution or parameter expansion and to separate
1005 fields with the built-in command read. The first
1006 character of the IFS variable is used to separate
1007 arguments for the "$*" substitution. See the Quoting
1008 section of this manual page.
1009
1010 Each single occurrence of an IFS character in the string
1011 to be split, that is not in the issspace character class,
1012 and any adjacent characters in IFS that are in the
1013 issspace character class, delimit a field. One or more
1014 characters in IFS that belong to the issspace character
1015 class, delimit a field. In addition, if the same issspace
1016 character appears consecutively inside IFS, this
1017 character is treated as if it were not in the issspace
1018 class, so that if IFS consists of two tab characters,
1019 then two adjacent tab characters delimit a null field.
1020
1021 The shell specifies a default value to IFS.
1022
1023
1024 JOBMAX
1025 This variable defines the maximum number running
1026 background jobs that can run at a time. When this limit
1027 is reached, the shell will wait for a job to complete
1028 before staring a new job.
1029
1030
1031 LANG
1032 This variable determines the locale category for any
1033 category not specifically selected with a variable
1034 starting with LC_ or LANG.
1035
1036
1037 LC_ALL
1038 This variable overrides the value of the LANG variable
1039 and any other LC_ variable.
1040
1041
1042 LC_COLLATE
1043 This variable determines the locale category for
1044 character collation information.
1045
1046
1047 LC_CTYPE
1048 This variable determines the locale category for
1049 character handling functions. It determines the
1050 character classes for pattern matching. See the File Name
1051 Generation section of this manual page.
1052
1053
1054 LC_NUMERIC
1055 This variable determines the locale category for the
1056 decimal point character.
1057
1058
1059 LINES
1060 If this variable is set, the value is used to determine
1061 the column length for printing select lists. Select lists
1062 prints vertically until about two-thirds of LINES lines
1063 are filled.
1064
1065
1066 MAIL
1067 If this variable is set to the name of a mail file and
1068 the MAILPATH variable is not set, then the shell informs
1069 the user of arrival of mail in the specified file.
1070
1071 MAIL is not set by the shell. On some systems, MAIL is
1072 set by login(1).
1073
1074
1075 MAILCHECK
1076 Specifies how often in seconds the shell checks for
1077 changes in the modification time of any of the files
1078 specified by the MAILPATH or MAIL variables. The default
1079 value is 600 seconds. When the time has elapsed the shell
1080 checks before issuing the next prompt.
1081
1082 The shell specifies a default value to MAILCHECK.
1083
1084
1085 MAILPATH
1086 A colon ( : ) separated list of file names. If this
1087 variable is set, then the shell informs the user of any
1088 modifications to the specified files that have occurred
1089 within the last MAILCHECK seconds. Each file name can be
1090 followed by a ? and a message that is printed. The
1091 message undergoes parameter expansion, command
1092 substitution, and arithmetic substitution with the
1093 variable $_ defined as the name of the file that has
1094 changed. The default message is you have mail in $_.
1095
1096
1097 PATH
1098 The search path for commands. Except in .profile, users
1099 cannot change PATH if executing under rksh93. See the
1100 Execution section of this manual page.
1101
1102 The shell specifies a default value to PATH.
1103
1104
1105 PS1
1106 The value of this variable is expanded for parameter
1107 expansion, command substitution, and arithmetic
1108 substitution to define the primary prompt string which by
1109 default is $. The character ! in the primary prompt
1110 string is replaced by the command number. Two successive
1111 occurrences of ! produces a single ! when the prompt
1112 string is printed. See the Command Re-entry section of
1113 this manual page.
1114
1115 The shell specifies a default value to PS1.
1116
1117
1118 PS2
1119 Secondary prompt string, by default, >.
1120
1121 The shell specifies a default value to PS2.
1122
1123
1124 PS3
1125 Selection prompt string used within a select loop, by
1126 default #?.
1127
1128 The shell specifies a default value to PS3.
1129
1130
1131 PS4
1132 The value of this variable is expanded for parameter
1133 evaluation, command substitution, and arithmetic
1134 substitution and precedes each line of an execution
1135 trace. By default, PS4 is +. When PS4 is unset, the
1136 execution trace prompt is also + .
1137
1138 The shell specifies a default value to PS4.
1139
1140
1141 SHELL
1142 The pathname of the shell is kept in the environment. At
1143 invocation, if the basename of this variable is rsh,
1144 rksh, rksh93, or krsh, the shell becomes restricted.
1145
1146 SHELL is not set by the shell. On some systems, SHELL is
1147 set by login(1).
1148
1149
1150 TIMEFORMAT
1151 The value of this parameter is used as a format string
1152 specifying how the timing information for pipelines
1153 prefixed with the time reserved word should be displayed.
1154 The % character introduces a format sequence that is
1155 expanded to a time value or other information.
1156
1157 The format sequences and their meanings are as follows.
1158
1159 %%
1160
1161 A literal %.
1162
1163
1164 %[p][l]R
1165
1166 The elapsed time in seconds.
1167
1168
1169 %[p][l]U
1170
1171 The number of CPU seconds spent in user mode.
1172
1173
1174 %[p][l]S
1175
1176 The number of CPU seconds spent in system mode.
1177
1178
1179 %P
1180
1181 The CPU percentage, computed as (U + S) / R.
1182
1183 The braces denote optional portions. The optional p is a
1184 digit specifying the precision, the number of fractional
1185 digits after a decimal point. A value of 0 causes no
1186 decimal point or fraction to be output. At most three
1187 places after the decimal point can be displayed. Values
1188 of p greater than 3 are treated as 3. If p is not
1189 specified, the value 3 is used.
1190
1191 The optional l specifies a longer format, including hours
1192 if greater than zero, minutes, and seconds of the form
1193 HHhMMmSS.FFs. The value of p determines whether or not
1194 the fraction is included.
1195
1196 All other characters are output without change and a
1197 trailing NEWLINE is added. If unset, the default value,
1198 $'\nreal\t%2lR\nuser\t%2lU\nsys%2lS', is used. If the
1199 value is null, no timing information is displayed.
1200
1201
1202 TMOUT
1203 If set to a value greater than zero, TMOUT is the default
1204 time-out value for the read built-in command. The select
1205 compound command terminates after TMOUT seconds when
1206 input is from a terminal. Otherwise, the shell terminates
1207 if a line is not entered within the prescribed number of
1208 seconds while reading from a terminal. The shell can be
1209 compiled with a maximum bound for this value which cannot
1210 be exceeded.
1211
1212 The shell specifies a default value to TMOUT.
1213
1214
1215 VISUAL
1216 If the value of this variable matches the pattern
1217 *[Vv][Ii]*, then the vi option is turned on. See Special
1218 Commands. If the value matches the pattern *gmacs* , the
1219 gmacs option is turned on. If the value matches the
1220 pattern *macs*, then the emacs option is turned on. The
1221 value of VISUAL overrides the value of EDITOR.
1222
1223
1224 Field Splitting
1225 After parameter expansion and command substitution, the results of
1226 substitutions are scanned for the field separator characters (those
1227 found in IFS) and split into distinct fields where such characters are
1228 found. Explicit null fields ("" or '') are retained. Implicit null
1229 fields, those resulting from parameters that have no values or command
1230 substitutions with no output, are removed.
1231
1232
1233 If the braceexpand (-B) option is set, each of the fields resulting
1234 from IFS are checked to see if they contain one or more of the brace
1235 patterns. Valid brace patterns: {*,*}, {l1..l2} , {n1..n2},
1236 {n1..n2%fmt} {n1..n2 ..n3}, or {n1..n2 ..n3%fmt} , where * represents
1237 any character, l1,l2 are letters and n1,n2,n3 are signed numbers and
1238 fmt is a format specified as used by printf. In each case, fields are
1239 created by prepending the characters before the { and appending the
1240 characters after the } to each of the strings generated by the
1241 characters between the { and }. The resulting fields are checked to see
1242 if they have any brace patterns.
1243
1244
1245 In the first form, a field is created for each string between { and ,,
1246 between , and ,, and between , and }. The string represented by * can
1247 contain embedded matching { and } without quoting. Otherwise, each {
1248 and } with * must be quoted.
1249
1250
1251 In the second form, l1 and l2 must both be either upper case or both be
1252 lower case characters in the C locale. In this case a field is created
1253 for each character from l1 through l2.
1254
1255
1256 In the remaining forms, a field is created for each number starting at
1257 n1. This continues until it reaches n2 and increments n1 by n3. The
1258 cases where n3 is not specified behave as if n3 were 1 if n1<=n2, and
1259 -1 otherwise. In forms which specify %fmt, any format flags, widths and
1260 precisions can be specified and fmt can end in any of the specifiers
1261 cdiouxX. For example, {a,z}{1..5..3%02d}{b..c}x expands to the 8
1262 fields, a01bx, a01cx, a04bx, a04cx, z01bx, z01cx, z04bx, and z04cx.
1263
1264 File Name Generation
1265 Following splitting, each field is scanned for the characters *, ?, (,
1266 and [, unless the -f option has been set. If one of these characters
1267 appears, then the word is regarded as a pattern.
1268
1269
1270 Each file name component that contains any pattern character is
1271 replaced with a lexicographically sorted set of names that matches the
1272 pattern from that directory. If no file name is found that matches the
1273 pattern, then that component of the file name is left unchanged unless
1274 the pattern is prefixed with ~(N) in which case it is removed. If
1275 FIGNORE is set, then each file name component that matches the pattern
1276 defined by the value of FIGNORE is ignored when generating the matching
1277 file names. The names . and .. are also ignored. If FIGNORE is not set,
1278 the character . at the start of each file name component is ignored
1279 unless the first character of the pattern corresponding to this
1280 component is the character . itself. For other uses of pattern matching
1281 the / and . are not specially treated.
1282
1283 *
1284 Match any string, including the null string. When used for
1285 file name expansion, if the globstar option is on, two
1286 adjacent *s by themselves match all files and zero or more
1287 directories and subdirectories. If the two adjacent *s are
1288 followed by a /, only directories and subdirectories match.
1289
1290
1291 ?
1292 Matches any single character.
1293
1294
1295 [...]
1296 Match any one of the enclosed characters. A pair of
1297 characters separated by - matches any character lexically
1298 between the pair, inclusive. If the first character
1299 following the opening [ is a ! or ^, any character not
1300 enclosed is matched. A - can be included in the character
1301 set by putting it as the first or last character. Within [
1302 and ], character classes can be specified with the syntax
1303 [:class:] where class is one of the following classes
1304 defined in the ANSI-C standard:
1305
1306 alnum alpha blank cntrl digit graph
1307 lower print punct space upper
1308 word xdigit
1309
1310
1311 word is equivalent to alnum plus the character _. Within [
1312 and ], an equivalence class can be specified with the syntax
1313 [=c=] which matches all characters with the same primary
1314 collation weight (as defined by the current locale) as the
1315 character c. Within [ and ], [.symbol.] matches the
1316 collating symbol symbol.
1317
1318
1319
1320 A pattern-list is a list of one or more patterns separated from each
1321 other with an & or |. An & signifies that all patterns must be matched
1322 whereas | requires that only one pattern be matched. Composite patterns
1323 can be formed with one or more of the following sub-patterns:
1324
1325 ?(pattern-list)
1326 Optionally matches any one of the specified
1327 patterns.
1328
1329
1330 *(pattern-list)
1331 Matches zero or more occurrences of the specified
1332 patterns.
1333
1334
1335 +(pattern-list)
1336 Matches one or more occurrences of the specified
1337 patterns.
1338
1339
1340 {n(pattern-list)
1341 Matches n occurrences of the specified patterns.
1342
1343
1344 {m,n(pattern-list)
1345 Matches from m to n occurrences of the specified
1346 patterns. If m is omitted, 0 is used. If n is
1347 omitted at least m occurrences are matched.
1348
1349
1350 @(pattern-list)
1351 Matches exactly one of the specified patterns.
1352
1353
1354 !(pattern-list)
1355 Matches anything except one of the specified
1356 patterns.
1357
1358
1359
1360 By default, each pattern, or sub-pattern matches the longest string
1361 possible consistent with generating the longest overall match. If more
1362 than one match is possible, the one starting closest to the beginning
1363 of the string is chosen. However, for each of the compound patterns a
1364 - can be inserted in front of the ( to cause the shortest match to the
1365 specified pattern-list to be used.
1366
1367
1368 When pattern-list is contained within parentheses, the backslash
1369 character \ is treated specially even when inside a character class.
1370 All ANSI-C character escapes are recognized and match the specified
1371 character. In addition the following escape sequences are recognized:
1372
1373 \d
1374 Matches any character in the digit class.
1375
1376
1377 \D
1378 Matches any character not in the digit class.
1379
1380
1381 \s
1382 Matches any character in the space class.
1383
1384
1385 \S
1386 Matches any character not in the space class.
1387
1388
1389 \w
1390 Matches any character in the word class.
1391
1392
1393 \W
1394 Matches any character not in the word class.
1395
1396
1397
1398 A pattern of the form %(pattern-pairs) is a sub-pattern that can be
1399 used to match nested character expressions. Each pattern-pair is a two
1400 character sequence which cannot contain & or |. The first pattern-pair
1401 specifies the starting and ending characters for the match. Each
1402 subsequent pattern-pair represents the beginning and ending characters
1403 of a nested group that is skipped over when counting starting and
1404 ending character matches. The behavior is unspecified when the first
1405 character of a pattern-pair is alphanumeric except for the following:
1406
1407 D
1408 Causes the ending character to terminate the search for this
1409 pattern without finding a match.
1410
1411
1412 E
1413 Causes the ending character to be interpreted as an escape
1414 character.
1415
1416
1417 L
1418 Causes the ending character to be interpreted as a quote character
1419 causing all characters to be ignored when looking for a match.
1420
1421
1422 Q
1423 Causes the ending character to be interpreted as a quote character
1424 causing all characters other than any escape character to be
1425 ignored when looking for a match.
1426
1427
1428
1429 %({}Q"E\), matches characters starting at { until the matching } is
1430 found not counting any { or } that is inside a double quoted string or
1431 preceded by the escape character \. Without the {} this pattern matches
1432 any C language string.
1433
1434
1435 Each sub-pattern in a composite pattern is numbered, starting at 1, by
1436 the location of the ( within the pattern. The sequence \n, where n is a
1437 single digit and \n comes after the nth. sub-pattern, matches the same
1438 string as the sub-pattern itself.
1439
1440
1441 A pattern can contain sub-patterns of the form ~(options:pattern-list),
1442 where either options or :pattern-list can be omitted. Unlike the other
1443 compound patterns, these sub-patterns are not counted in the numbered
1444 sub-patterns. :pattern-list must be omitted for options F, G, N and V
1445 below. If options is present, it can consist of one or more of the
1446 following:
1447
1448 +
1449 Enable the following options. This is the default.
1450
1451
1452 -
1453 Disable the following options.
1454
1455
1456 E
1457 The remainder of the pattern uses extended regular expression
1458 syntax like the egrep(1) command.
1459
1460
1461 F
1462 The remainder of the pattern uses fgrep(1) expression syntax.
1463
1464
1465 g
1466 File the longest match (greedy).
1467
1468 This is the default.
1469
1470
1471 G
1472 The remainder of the pattern uses basic regular expression syntax
1473 like the grep(1) command.
1474
1475
1476 i
1477 Treat the match as case insensitive.
1478
1479
1480 K
1481 The remainder of the pattern uses shell pattern syntax.
1482
1483 This is the default.
1484
1485
1486 l
1487 Left anchor the pattern.
1488
1489 This is the default for K style patterns.
1490
1491
1492 N
1493 This is ignored. However, when it is the first letter and is used
1494 with file name generation, and no matches occur, the file pattern
1495 expands to the empty string.
1496
1497
1498 r
1499 Right anchor the pattern.
1500
1501 This is the default for K style patterns.
1502
1503
1504 X
1505 The remainder of the pattern uses augmented regular expression
1506 syntax.
1507
1508
1509 P
1510 The remainder of the pattern uses perl(1) regular expression
1511 syntax. Not all perl regular expression syntax is currently
1512 implemented.
1513
1514
1515 V
1516 The remainder of the pattern uses System V regular expression
1517 syntax.
1518
1519
1520
1521 If both options and :pattern-list are specified, then the options apply
1522 only to pattern-list. Otherwise, these options remain in effect until
1523 they are disabled by a subsequent ~(...) or at the end of the sub-
1524 pattern containing ~(...).
1525
1526 Quoting
1527 Each of the metacharacters listed in the Definitions section of this
1528 manual page has a special meaning to the shell and causes termination
1529 of a word unless quoted. A character can be quoted, that is, made to
1530 stand for itself, by preceding it with a backslash (\). The pair
1531 \NEWLINE is removed. All characters enclosed between a pair of single
1532 quote marks ('') that is not preceded by a $ are quoted. A single quote
1533 cannot appear within the single quotes. A single quoted string preceded
1534 by an unquoted $ is processed as an ANSI-C string except for the
1535 following:
1536
1537 \0
1538 Causes the remainder of the string to be ignored.
1539
1540
1541 \cx
1542 Expands to the character CTRL-x.
1543
1544
1545 \C[.name.]
1546 Expands to the collating element name.
1547
1548
1549 \e
1550 Equivalent to the escape character (ASCII 033),
1551
1552
1553 \E
1554 Equivalent to the escape character (ASCII 033),
1555
1556
1557
1558 Inside double quote marks (""), parameter and command substitution
1559 occur and \ quotes the characters \, `, ", and $. A $ in front of a
1560 double quoted string is ignored in the C or POSIX locale, and might
1561 cause the string to be replaced by a locale specific string otherwise.
1562 The meaning of $* and $@ is identical when not quoted or when used as a
1563 variable assignment value or as a file name. However, when used as a
1564 command argument, "$*" is equivalent to "$1d$2d...", where d is the
1565 first character of the IFS variable, whereas "$@" is equivalent to "$1"
1566 "$2" .... Inside grave quote marks (``), \ quotes the characters \, `,
1567 and $. If the grave quotes occur within double quotes, then \ also
1568 quotes the character ".
1569
1570
1571 The special meaning of reserved words or aliases can be removed by
1572 quoting any character of the reserved word. The recognition of function
1573 names or built-in command names cannot be altered by quoting them.
1574
1575 Arithmetic Evaluation
1576 The shell performs arithmetic evaluation for arithmetic substitution,
1577 to evaluate an arithmetic command, to evaluate an indexed array
1578 subscript, and to evaluate arguments to the built-in commands shift and
1579 let. Arithmetic evaluation is also performed on argument operands of
1580 the built-in command printf that correspond to numeric format
1581 specifiers in the format operand. See printf(1). Evaluations are
1582 performed using double precision floating point arithmetic or long
1583 double precision floating point for systems that provide this data
1584 type. Floating point constants follow the ANSI-C programming language
1585 floating point conventions. The floating point constants Nan and Inf
1586 can be used to represent "not a number" and infinity respectively.
1587 Integer constants follow the ANSI-C programming language integer
1588 constant conventions although only single byte character constants are
1589 recognized and character casts are not recognized. Constants can be of
1590 the form [base#]n where base is a decimal number between two and sixty-
1591 four representing the arithmetic base and n is a number in that base.
1592 The digits greater than 9 are represented by the lower case letters,
1593 the upper case letters, @, and _ respectively. For bases less than or
1594 equal to 36, upper and lower case characters can be used
1595 interchangeably.
1596
1597
1598 An arithmetic expression uses the same syntax, precedence, and
1599 associativity of expression as the C language. All the C language
1600 operators that apply to floating point quantities can be used. In
1601 addition, the operator ** can be used for exponentiation. It has higher
1602 precedence than multiplication and is left associative. When the value
1603 of an arithmetic variable or subexpression can be represented as a long
1604 integer, all C language integer arithmetic operations can be performed.
1605 Variables can be referenced by name within an arithmetic expression
1606 without using the parameter expansion syntax. When a variable is
1607 referenced, its value is evaluated as an arithmetic expression.
1608
1609
1610 Any of the following math library functions that are in the C math
1611 library can be used within an arithmetic expression:
1612
1613 rint round sin sinh sqrt tan tanh tgamma trunc abs acos
1614 acosh asin asinh atan atan2 atanh cbrt ceil copysign cos
1615 cosh erf erfc exp exp2 expm1 fabs fpclassify fdim finite
1616 floor fma fmax fmin fmod hypot ilogb int isfinite sinf isnan
1617 isnormal issubnormal issubor- dered iszero j0 j1 jn lgamma
1618 log log10 log2 logb nearbyint nextafter nexttoward pow
1619 remainder rint round scanb signbit sin sinh sqrt tan tanh
1620 tgamma trunc y0 y1 yn
1621
1622
1623
1624
1625 In addition, arithmetic functions can be defined as shell functions
1626 with a variant of the function name syntax:
1627
1628 function .sh.math.name ident ... { list ;}
1629 where name is the function name used in the arithmetic expression
1630 and each identified ident is a name reference to the long double
1631 precision floating point argument. The value of .sh.value when the
1632 function returns is the value of this function. User defined
1633 functions can take up to 3 arguments and override C math library
1634 functions.
1635
1636
1637
1638 An internal representation of a variable as a double precision floating
1639 point can be specified with the -E [n], -F [n], or -X [n] options of
1640 the typeset special built-in command. The -E option causes the
1641 expansion of the value to be represented using scientific notation when
1642 it is expanded. The optional option argument n defines the number of
1643 significant figures. The -F option causes the expansion to be
1644 represented as a floating decimal number when it is expanded. The
1645 optional option argument n defines the number of places after the
1646 decimal point in this case. The -X option causes the expansion to be
1647 represented using the %a format defined by ISO C-99. The optional
1648 option argument n defines the number of places after the decimal (or
1649 radix) point in this case.
1650
1651
1652
1653 An internal integer representation of a variable can be specified with
1654 the -i [n] option of the typeset special built-in command. The optional
1655 option argument n specifies an arithmetic base to be used when
1656 expanding the variable. If you do not specify an arithmetic base, base
1657 10 is used.
1658
1659
1660 Arithmetic evaluation is performed on the value of each assignment to a
1661 variable with the -E, -F, -X or -i option. Assigning a floating point
1662 number to a variable whose type is an integer causes the fractional
1663 part to be truncated.
1664
1665 Prompting
1666 When used interactively, the shell prompts with the value of PS1 after
1667 expanding it for parameter expansion, command substitution, and
1668 arithmetic substitution, before reading a command. In addition, each
1669 single ! in the prompt is replaced by the command number. A !! is
1670 required to place ! in the prompt. If at any time a NEWLINE is typed
1671 and further input is needed to complete a command, then the secondary
1672 prompt, that is, the value of PS2, is issued.
1673
1674 Conditional Expressions
1675 A conditional expression is used with the [[ compound command to test
1676 attributes of files and to compare strings. Field splitting and file
1677 name generation are not performed on the words between [[ and ]].
1678
1679
1680 Each expression can be constructed from one or more of the following
1681 unary or binary expressions:
1682
1683 -a file
1684 True, if file exists.
1685
1686 This option is the same as -e. This option is
1687 obsolete.
1688
1689
1690 -b file
1691 True, if file exists and is a block special file.
1692
1693
1694 -c file
1695 True, if file exists and is a character special
1696 file.
1697
1698
1699 -d file
1700 True, if file exists and is a directory.
1701
1702
1703 -e file
1704 True, if file exists.
1705
1706
1707 -f file
1708 True, if file exists and is an ordinary file.
1709
1710
1711 -g file
1712 True, if file exists and it has its setgid bit
1713 set.
1714
1715
1716 -G file
1717 True, if file exists and its group matches the
1718 effective group id of this process.
1719
1720
1721 -h file
1722 True, if file exists and is a symbolic link.
1723
1724
1725 -k file
1726 True, if file exists and it has its sticky bit
1727 set.
1728
1729
1730 -L file
1731 True, if file exists and is a symbolic link.
1732
1733
1734 -n string
1735 True, if length of string is non-zero.
1736
1737
1738 -N file
1739 True, if file exists and the modification time is
1740 greater than the last access time.
1741
1742
1743 -o option
1744 True, if option named option is on.
1745
1746
1747 -o ?option
1748 True, if option named option is a valid option
1749 name.
1750
1751
1752 -O file
1753 True, if file exists and is owned by the effective
1754 user id of this process.
1755
1756
1757 -p file
1758 True, if file exists and is a FIFO special file or
1759 a pipe.
1760
1761
1762 -r file
1763 True, if file exists and is readable by current
1764 process.
1765
1766
1767 -R name
1768 True if variable name is a name reference.
1769
1770
1771 -s file
1772 True, if file exists and has size greater than
1773 zero.
1774
1775
1776 -S file
1777 True, if file exists and is a socket.
1778
1779
1780 -t fildes
1781 True, if file descriptor number fildes is open and
1782 associated with a terminal device.
1783
1784
1785 -u file
1786 True, if file exists and it has its setuid bit
1787 set.
1788
1789
1790 -v name
1791 True, if variable name is a valid variable name
1792 and is set.
1793
1794
1795 -w file
1796 True, if file exists and is writable by current
1797 process.
1798
1799
1800 -x file
1801 True, if file exists and is executable by current
1802 process. If file exists and is a directory, then
1803 true if the current process has permission to
1804 search in the directory.
1805
1806
1807 -z string
1808 True, if length of string is zero.
1809
1810
1811 file1 -ef file2
1812 True, if file1 and file2 exist and refer to the
1813 same file.
1814
1815
1816 file1 -nt file2
1817 True, if file1 exists and file2 does not, or file1
1818 is newer than file2.
1819
1820
1821 file1 -ot file2
1822 True, if file2 exists and file1 does not, or file1
1823 is older than file2.
1824
1825
1826 string
1827 True, if string is not null.
1828
1829
1830 string == pattern
1831 True, if string matches pattern. Any part of
1832 pattern can be quoted to cause it to be matched as
1833 a string. With a successful match to pattern, the
1834 .sh.match array variable contains the match and
1835 sub-pattern matches.
1836
1837
1838 string = pattern
1839 Same as ==, but is obsolete.
1840
1841
1842 string != pattern
1843 True, if string does not match pattern. When the
1844 string matches the pattern the .sh.match array
1845 variable contains the match and sub-pattern
1846 matches.
1847
1848
1849 string =~ ere
1850 True if string matches the pattern ~(E)ere where
1851 ere is an extended regular expression.
1852
1853
1854 string1 < string2
1855 True, if string1 comes before string2 based on
1856 ASCII value of their characters.
1857
1858
1859 string1 > string2
1860 True, if string1 comes after string2 based on
1861 ASCII value of their characters.
1862
1863
1864 In each of the above expressions, if file is of the form /dev/fd/n,
1865 where n is an integer, the test is applied to the open file whose
1866 descriptor number is n.
1867
1868
1869 The following obsolete arithmetic comparisons are also supported:
1870
1871 exp1 -eq exp2
1872 True, if exp1 is equal to exp2.
1873
1874
1875 exp1 -ge exp2
1876 True, if exp1 is greater than or equal to exp2.
1877
1878
1879 exp1 -gt exp2
1880 True, if exp1 is greater than exp2.
1881
1882
1883 exp1 -le exp2
1884 True, if exp1 is less than or equal to exp2.
1885
1886
1887 exp1 -lt exp2
1888 True, if exp1 is less than exp2.
1889
1890
1891 exp1 -ne exp2
1892 True, if exp1 is not equal to exp2.
1893
1894
1895
1896 A compound expression can be constructed from these primitives by using
1897 any of the following, listed in decreasing order of precedence:
1898
1899 (expression)
1900 True, if expression is true. Used to
1901 group expressions.
1902
1903
1904 ! expression
1905 True, if expression is false.
1906
1907
1908 expression1 && expression2
1909 True, if expression1 and expression2 are
1910 both true.
1911
1912
1913 expression1 || expression2
1914 True, if either expression1 or
1915 expression2 is true.
1916
1917
1918 Input and Output
1919 Before a command is executed, its input and output can be redirected
1920 using a special notation interpreted by the shell. The following can
1921 appear anywhere in a simple command or can precede or follow a command
1922 and are not passed on to the invoked command. Command substitution,
1923 parameter expansion, and arithmetic substitution occur before word or
1924 digit is used except as noted in this section. File name generation
1925 occurs only if the shell is interactive and the pattern matches a
1926 single file. Field splitting is not performed.
1927
1928
1929 In each of the following redirections, if file is of the form
1930 /dev/sctp/host/port, /dev/tcp/host/port, or /dev/udp/host/port, where
1931 host is a hostname or host address, and port is a service specified by
1932 name or an integer port number, then the redirection attempts to make a
1933 tcp, sctp or udp connection to the corresponding socket.
1934
1935
1936 No intervening space is allowed between the characters of redirection
1937 operators.
1938
1939 <word
1940 Use file word as standard input (file descriptor 0).
1941
1942
1943 >word
1944 Use file word as standard output (file descriptor 1). If
1945 the file does not exist then it is created. If the file
1946 exists, and the noclobber option is on, this causes an
1947 error. Otherwise, it is truncated to zero length.
1948
1949
1950 >|word
1951 Same as >, except that it overrides the noclobber option.
1952
1953
1954 >;word
1955 Write output to a temporary file. If the command
1956 completes successfully rename it to word, otherwise,
1957 delete the temporary file. >;word cannot be used with
1958 the exec(2) built-in.
1959
1960
1961 >>word
1962 Use file word as standard output. If the file exists,
1963 then output is appended to it (by first seeking to the
1964 end-of-file). Otherwise, the file is created.
1965
1966
1967 <>word
1968 Open file word for reading and writing as standard input.
1969
1970
1971 <<[-]word
1972 The shell input is read up to a line that is the same as
1973 word after any quoting has been removed, or to an end-of-
1974 file. No parameter substitution, command substitution,
1975 arithmetic substitution or file name generation is
1976 performed on word. The resulting document, called a here-
1977 document, becomes the standard input. If any character of
1978 word is quoted, then no interpretation is placed upon the
1979 characters of the document. Otherwise, parameter
1980 expansion, command substitution, and arithmetic
1981 substitution occur, \NEWLINE is ignored, and \ must be
1982 used to quote the characters \, $, `. If - is appended to
1983 <<, then all leading tabs are stripped from word and from
1984 the document. If # is appended to <<, then leading SPACEs
1985 and TABs are stripped off the first line of the document
1986 and up to an equivalent indentation is stripped from the
1987 remaining lines and from word. A tab stop is assumed to
1988 occur at every 8 columns for the purposes of determining
1989 the indentation.
1990
1991
1992 <<<word
1993 A short form of here document in which word becomes the
1994 contents of the here-document after any parameter
1995 expansion, command substitution, and arithmetic
1996 substitution occur.
1997
1998
1999 <&digit
2000 The standard input is duplicated from file descriptor
2001 digit, and similarly for the standard output using
2002 >&digit. See dup(2).
2003
2004
2005 <&digit-
2006 The file descriptor specified by digit is moved to
2007 standard input. Similarly for the standard output using
2008 >&digit-.
2009
2010
2011 <&-
2012 The standard input is closed. Similarly for the standard
2013 output using >&-.
2014
2015
2016 <&p
2017 The input from the co-process is moved to standard input.
2018
2019
2020 >&p
2021 The output to the co-process is moved to standard output.
2022
2023
2024 <#((expr))
2025 Evaluate arithmetic expression expr and position file
2026 descriptor 0 to the resulting value bytes from the start
2027 of the file. The variables CUR and EOF evaluate to the
2028 current offset and end-of-file offset respectively when
2029 evaluating expr.
2030
2031
2032 >#((expr))
2033 The same as <# except applies to file descriptor 1.
2034
2035
2036 <#pattern
2037 Seek forward to the beginning of the next line containing
2038 pattern.
2039
2040
2041 <##pattern
2042 The same as <#, except that the portion of the file that
2043 is skipped is copied to standard output.
2044
2045
2046
2047 If one of the redirection operators is preceded by a digit, with no
2048 intervening space, then the file descriptor number referred to is that
2049 specified by the digit (instead of the default 0 or 1). If one of the
2050 redirection operators other than >&- and the ># and <# forms, is
2051 preceded by {varname} with no intervening space, then a file descriptor
2052 number > 10 is selected by the shell and stored in the variable
2053 varname. If >&- or the any of the ># and <# forms is preceded by
2054 {varname} the value of varname defines the file descriptor to close or
2055 position. For example:
2056
2057 ... 2>&1
2058
2059
2060
2061
2062 means file descriptor 2 is to be opened for writing as a duplicate of
2063 file descriptor 1 and
2064
2065 exec [n]<file
2066
2067
2068
2069
2070 means open file for reading and store the file descriptor number in
2071 variable n. The order in which redirections are specified is
2072 significant. The shell evaluates each redirection in terms of the
2073 (file_descriptor, file) association at the time of evaluation. For
2074 example:
2075
2076 ... 1>fname 2>&1
2077
2078
2079
2080
2081 first associates file descriptor 1 with file fname. It then associates
2082 file descriptor 2 with the file associated with file descriptor 1, that
2083 is, fname. If the order of redirections were reversed, file descriptor
2084 2 would be associated with the terminal (assuming file descriptor 1 had
2085 been) and then file descriptor 1 would be associated with file fname.
2086 If a command is followed by & and job control is not active, the
2087 default standard input for the command is the empty file /dev/null.
2088 Otherwise, the environment for the execution of a command contains the
2089 file descriptors of the invoking shell as modified by input and output
2090 specifications.
2091
2092 Environment
2093 The environment is a list of name-value pairs that is passed to an
2094 executed program in the same way as a normal argument list. See
2095 environ(5).
2096
2097
2098 The names must be identifiers and the values are character strings. The
2099 shell interacts with the environment in several ways. On invocation,
2100 the shell scans the environment and creates a variable for each name
2101 found, giving it the corresponding value and attributes and marking it
2102 export. Executed commands inherit the environment. If the user modifies
2103 the values of these variables or creates new ones, using the export or
2104 typeset -x commands, they become part of the environment. The
2105 environment seen by any executed command is thus composed of any name-
2106 value pairs originally inherited by the shell, whose values can be
2107 modified by the current shell, plus any additions which must be noted
2108 in export or typeset -x commands. The environment for any simple-
2109 command or function can be augmented by prefixing it with one or more
2110 variable assignments. A variable assignment argument is a word of the
2111 form identifier=value. Thus:
2112
2113 TERM=450 cmd args
2114
2115
2116
2117
2118 and
2119
2120 (export TERM; TERM=450; cmd args)
2121
2122
2123
2124
2125 are equivalent (as far as the execution of cmd is concerned except for
2126 special built-in commands listed in the Built-Ins section, those that
2127 are preceded with a dagger. If the obsolete -k option is set, all
2128 variable assignment arguments are placed in the environment, even if
2129 they occur after the command name.
2130
2131
2132 The following example first prints a=b c and then c:
2133
2134 echo a=b c
2135 set -k
2136 echo a=b c
2137
2138
2139
2140
2141 This feature is intended for use with scripts written for early
2142 versions of the shell and its use in new scripts is strongly
2143 discouraged.
2144
2145 Functions
2146 For historical reasons, there are two ways to define functions, the
2147 name() syntax and the function name syntax. These are described in the
2148 Commands section of this manual page.
2149
2150
2151 Shell functions are read in and stored internally. Alias names are
2152 resolved when the function is read. Functions are executed like
2153 commands with the arguments passed as positional parameters. See the
2154 Execution section of this manual page for details.
2155
2156
2157 Functions defined by the function name syntax and called by name
2158 execute in the same process as the caller and share all files and
2159 present working directory with the caller. Traps caught by the caller
2160 are reset to their default action inside the function. A trap condition
2161 that is not caught or ignored by the function causes the function to
2162 terminate and the condition to be passed on to the caller. A trap on
2163 EXIT set inside a function is executed in the environment of the caller
2164 after the function completes. Ordinarily, variables are shared between
2165 the calling program and the function. However, the typeset special
2166 built-in command used within a function defines local variables whose
2167 scope includes the current function. They can be passed to functions
2168 that they call in the variable assignment list that precedes the call
2169 or as arguments passed as name references. Errors within functions
2170 return control to the caller.
2171
2172
2173 Functions defined with the name() syntax and functions defined with the
2174 function name syntax that are invoked with the . special built-in are
2175 executed in the caller's environment and share all variables and traps
2176 with the caller. Errors within these function executions cause the
2177 script that contains them to abort.
2178
2179
2180 The special built-in command return is used to return from function
2181 calls.
2182
2183
2184 Function names can be listed with the -f or +f option of the typeset
2185 special built-in command. The text of functions, when available, is
2186 also listed with -f. Functions can be undefined with the -f option of
2187 the unset special built-in command.
2188
2189
2190 Ordinarily, functions are unset when the shell executes a shell script.
2191 Functions that need to be defined across separate invocations of the
2192 shell should be placed in a directory and the FPATH variable should
2193 contain the name of this directory. They can also be specified in the
2194 ENV file.
2195
2196 Discipline Functions
2197 Each variable can have zero or more discipline functions associated
2198 with it. The shell initially understands the discipline names get,
2199 set, append, and unset but on most systems others can be added at run
2200 time via the C programming interface extension provided by the builtin
2201 built-in utility. If the get discipline is defined for a variable, it
2202 is invoked whenever the specified variable is referenced. If the
2203 variable .sh.value is assigned a value inside the discipline function,
2204 the referenced variable is evaluated to this value instead. If the set
2205 discipline is defined for a variable, it is invoked whenever the
2206 specified variable is assigned a value. If the append discipline is
2207 defined for a variable, it is invoked whenever a value is appended to
2208 the specified variable. The variable .sh.value is specified the value
2209 of the variable before invoking the discipline, and the variable is
2210 assigned the value of .sh.value after the discipline completes. If
2211 .sh.value is unset inside the discipline, then that value is unchanged.
2212 If the unset discipline is defined for a variable, it is invoked
2213 whenever the specified variable is unset. The variable is not unset
2214 unless it is unset explicitly from within this discipline function.
2215
2216
2217 The variable .sh.name contains the name of the variable for which the
2218 discipline function is called, .sh.subscript is the subscript of the
2219 variable, and .sh.value contains the value being assigned inside the
2220 set discipline function. For the set discipline, changing .sh.value
2221 changes the value that gets assigned. The variable _ is a reference to
2222 the variable including the subscript if any. For the set discipline,
2223 changing .sh.value will change the value that gets assigned. Finally,
2224 the expansion ${ var.name}, when name is the name of a discipline, and
2225 there is no variable of this name, is equivalent to the command
2226 substitution ${var.name;}.
2227
2228
2229 Name Spaces
2230 Commands and functions that are executed as part of the list of a
2231 namespace command that modify variables or create new ones, create a
2232 new variable whose name is the name of the name space as given by
2233 identifier preceded by two dots (..). When a variable whose name is
2234 name is referenced, it is first searched for using .identifier.name.
2235 Similarly, a function defined by a command in the namespace list is
2236 created using the name space name preceded by two dots (..).
2237
2238 When the list of a namespace command contains a namespace command, the
2239 names of variables and functions that are created consist of the
2240 variable or function name preceded by the list of identifiers each
2241 preceded by two dots (..).
2242
2243 Outside of a name space, a variable or function created inside a name
2244 space can be referenced by preceding it with the name space name.
2245
2246 By default, variables staring with .sh are in the sh name space.
2247
2248
2249 Typed Variables
2250 Typed variables provide a way to create data structure and objects. A
2251 type can be defined either by a shared library, by the enum built-in
2252 command described below, or by using the new -T option of the typeset
2253 built-in command. With the -T option of typeset, the type name,
2254 specified as an option argument to -T, is set with a compound variable
2255 assignment that defines the type. Function definitions can appear
2256 inside the compound variable assignment and these become discipline
2257 functions for this type and can be invoked or redefined by each
2258 instance of the type. The function name create is treated specially. It
2259 is invoked for each instance of the type that is created but is not
2260 inherited and cannot be redefined for each instance.
2261
2262 When a type is defined a special built-in command of that name is
2263 added. These built-ins are declaration commands and follow the same
2264 expansion rules as all the special built-in commands defined below that
2265 are preceded by a dot (.). These commands can subsequently be used
2266 inside further type definitions. The man page for these commands can be
2267 generated by using the --man option or any of the other -- options
2268 described with getopts. The -r, -a, -A, -h and -S options of typeset
2269 are permitted with each of these new built-ins.
2270
2271 An instance of a type is created by invoking the type name followed by
2272 one or more instance names. Each instance of the type is initialized
2273 with a copy of the sub-variables except for sub-variables that are
2274 defined with the -s option. Variables defined with -S are shared by all
2275 instances of the type. Each instance can change the value of any sub-
2276 variable and can also define new discipline functions of the same names
2277 as those defined by the type definition as well as any standard
2278 discipline names. No additional sub-variables can be defined for any
2279 instance.
2280
2281 When defining a type, if the value of a sub-variable is not set and the
2282 -r attribute is specified, it causes the sub-variable to be a required
2283 sub-variable. Whenever an instance of a type is created, all required
2284 sub-variables must be specified. These sub-variables become readonly in
2285 each instance.
2286
2287 When unset is invoked on a sub-variable within a type, and the -r
2288 attribute has not been specified for this field, the value is reset to
2289 the default value associative with the type. Invoking unset on a type
2290 instance not contained within another type deletes all sub-variables
2291 and the variable itself.
2292
2293 A type definition can be derived from another type definition by
2294 defining the first sub-variable name as _ and defining its type as the
2295 base type. Any remaining definitions will be additions and
2296 modifications that apply to the new type. If the new type name is the
2297 same is that of the base type, the type will be replaced and the
2298 original type will no longer be accessible.
2299
2300 The typeset command with -T and no option argument or operands will
2301 write all the type definitions to standard output in a form that that
2302 can be read in to create all the types.
2303
2304
2305 Jobs
2306 If the monitor option of the set command is turned on, an interactive
2307 shell associates a job with each pipeline. It keeps a table of current
2308 jobs, printed by the jobs command, and assigns them small integer
2309 numbers. When a job is started asynchronously with &, the shell prints
2310 a line which looks like:
2311
2312 [1] 1234
2313
2314
2315
2316
2317 indicating that the job which was started asynchronously was job number
2318 1 and had one (top-level) process, whose process id was 1234.
2319
2320
2321 If you are running a job and wish to stop it, CTRL-z sends a STOP
2322 signal to the current job. The shell normally displays a message that
2323 the job has been stopped, and displays another prompt. You can then
2324 manipulate the state of this job, putting it in the background with the
2325 bg command, or run some other commands and then eventually bring the
2326 job back into the foreground with the foreground command fg. A CTRL-z
2327 takes effect immediately and is like an interrupt in that pending
2328 output and unread input are discarded when it is typed.
2329
2330
2331 A job being run in the background stops if it tries to read from the
2332 terminal. Background jobs are normally allowed to produce output, but
2333 this can be disabled by giving the command sttytostop. If you set this
2334 tty option, then background jobs stop when they try to produce output
2335 like they do when they try to read input.
2336
2337
2338 A job pool is a collection of jobs started with list & associated with
2339 a name.
2340
2341
2342 There are several ways to refer to jobs in the shell. A job can be
2343 referred to by the process id of any process of the job or by one of
2344 the following:
2345
2346 %number
2347 The job with the specified number.
2348
2349
2350 pool
2351 All the jobs in the job pool named by pool.
2352
2353
2354 pool.number
2355 The job number number in the pool named by pool.
2356
2357
2358 %string
2359 Any job whose command line begins with string.
2360
2361
2362 %?string
2363 Any job whose command line contains string.
2364
2365
2366 %%
2367 Current job.
2368
2369
2370 %+
2371 Equivalent to %%.
2372
2373
2374 %-
2375 Previous job.
2376
2377
2378 In addition, unless noted otherwise, wherever a job can be specified,
2379 the name of a background job pool can be used to represent all the jobs
2380 in that pool.
2381
2382
2383
2384 The shell learns immediately whenever a process changes state. It
2385 normally informs you whenever a job becomes blocked so that no further
2386 progress is possible, but only just before it prints a prompt. This is
2387 done so that it does not otherwise disturb your work. The notify option
2388 of the set command causes the shell to print these job change messages
2389 as soon as they occur.
2390
2391
2392 When the monitor option is on, each background job that completes
2393 triggers any trap set for CHLD.
2394
2395
2396 When you try to leave the shell while jobs are running or stopped, you
2397 are warned that You have stopped(running) jobs. You can use the jobs
2398 command to see what they are. If you immediately try to exit again, the
2399 shell does not warn you a second time, and the stopped jobs are
2400 terminated. When a login shell receives a HUP signal, it sends a HUP
2401 signal to each job that has not been disowned with the disown built-in
2402 command.
2403
2404 Signals
2405 The INT and QUIT signals for an invoked command are ignored if the
2406 command is followed by & and the monitor option is not active.
2407 Otherwise, signals have the values inherited by the shell from its
2408 parent. See the trap built-in command.
2409
2410 Execution
2411 Each time a command is read, the substitutions are carried out. If the
2412 command name matches one of the ones in the Special Built-in Commands
2413 section of this manual page, it is executed within the current shell
2414 process. Next, the command name is checked to see if it matches a user
2415 defined function. If it does, the positional parameters are saved and
2416 then reset to the arguments of the function call. A function is also
2417 executed in the current shell process. When the function completes or
2418 issues a return, the positional parameter list is restored. For
2419 functions defined with the function name syntax, any trap set on EXIT
2420 within the function is executed. The exit value of a function is the
2421 value of the last command executed. If a command name is not a special
2422 built-in command or a user defined function, but it is one of the
2423 built-in commands, it is executed in the current shell process.
2424
2425
2426 The shell variables PATH and FPATH define the search path for the
2427 directory containing the command. Alternative directory names are
2428 separated by a colon (:). The default path is /bin:/usr/bin:,
2429 specifying /bin, /usr/bin, and the current directory in that order. The
2430 current directory can be specified by two or more adjacent colons, or
2431 by a colon at the beginning or end of the path list. If the command
2432 name contains a slash (/), the search path is not used. Otherwise, each
2433 directory in the list of directories defined by PATH and FPATH is
2434 checked in order. If the directory being searched is contained in the
2435 value of the FPATH variable and contains a file whose name matches the
2436 command being searched, then this file is loaded into the current shell
2437 environment as if it were the argument to the . command except that
2438 only preset aliases are expanded, and a function of the specified name
2439 is executed as described in this manual page.
2440
2441
2442 If this directory is not in FPATH, the shell first determines whether
2443 there is a built-in version of a command corresponding to a given
2444 pathname and, if so, it is invoked in the current process. If no built-
2445 in is found, the shell checks for a file named .paths in this
2446 directory. If found and there is a line of the form:
2447
2448 FPATH=path
2449
2450 where path is an existing directory, then that directory is searched
2451 immediately after the current directory as if it were found in the
2452 FPATH variable. If path does not begin with /, it is checked for
2453 relative to the directory being searched.
2454
2455
2456 The .paths file is then checked for a line of the form:
2457
2458 PLUGIN_LIB=libname [ : libname ] ...
2459
2460 Each library named by libname will be searched for as if it were an
2461 option argument to builtin -f and, if it contains a built-in of the
2462 specified name, this is executed instead of a command by this name.
2463
2464
2465 Any built-in loaded from a library found this way will be associated
2466 with the directory containing the .paths file so it will only execute
2467 if not found in an earlier directory.
2468
2469
2470 Finally, the directory will be checked for a file of the given name.
2471 If the file has execute permission but is not an a.out file, it is
2472 assumed to be a file containing shell commands. A separate shell is
2473 spawned to read it. All non-exported variables are removed in this
2474 case. If the shell command file doesn't have read permission, and/or if
2475 the setuid and setgid bits are set on the file, then the shell executes
2476 an agent whose job it is to set up the permissions and execute the
2477 shell with the shell command file passed down as an open file.
2478
2479 If the .paths contains a line of the form:
2480
2481 name=value
2482
2483 in the first or second line, then the environment variable name is
2484 modified by prepending the directory specified by value to the
2485 directory list. If value is not an absolute directory, then it
2486 specifies a directory relative to the directory in which the executable
2487 was found. If the environment variable name does not already exist it
2488 will be added to the environment list for the specified command.
2489
2490 A parenthesized command is executed in a sub-shell without removing
2491 non-exported variables.
2492
2493
2494 Command Re-entry
2495 The text of the last HISTSIZE (default 512) commands entered from a
2496 terminal device is saved in a history file. The file $HOME/.sh_history
2497 is used if the HISTFILE variable is not set or if the file it names is
2498 not writable. A shell can access the commands of all interactive shells
2499 which use the same named HISTFILE. The built-in command hist is used to
2500 list or edit a portion of this file. The portion of the file to be
2501 edited or listed can be selected by number or by giving the first
2502 character or characters of the command. A single command or range of
2503 commands can be specified. If you do not specify an editor program as
2504 an argument to hist then the value of the variable HISTEDIT is used. If
2505 HISTEDIT is unset, the obsolete variable FCEDIT is used. If FCEDIT is
2506 not defined, then /bin/ed is used. The edited commands are printed and
2507 executed again upon leaving the editor unless you quit without writing.
2508 The -s option (and in obsolete versions, the editor name -) is used to
2509 skip the editing phase and to re-execute the command. In this case a
2510 substitution parameter of the form old=newcan be used to modify the
2511 command before execution. For example, with the preset alias r, which
2512 is aliased to 'hist -s', typing `r bad=good c' re-executes the most
2513 recent command which starts with the letter c, replacing the first
2514 occurrence of the string bad with the string good.
2515
2516 Inline Editing Options
2517 Normally, each command line entered from a terminal device is simply
2518 typed followed by a NEWLINE (RETURN or LINE FEED). If either the emacs,
2519 gmacs, or vi option is active, the user can edit the command line. To
2520 be in either of these edit modes set the corresponding option. An
2521 editing option is automatically selected each time the VISUAL or EDITOR
2522 variable is assigned a value ending in either of these option names.
2523
2524
2525 The editing features require that the user's terminal accept RETURN as
2526 carriage return without line feed and that a SPACE must overwrite the
2527 current character on the screen.
2528
2529
2530 Unless the multiline option is on, the editing modes implement a
2531 concept where the user is looking through a window at the current line.
2532 The window width is the value of COLUMNS if it is defined, otherwise
2533 80. If the window width is too small to display the prompt and leave at
2534 least 8 columns to enter input, the prompt is truncated from the left.
2535 If the line is longer than the window width minus two, a mark is
2536 displayed at the end of the window to notify the user. As the cursor
2537 moves and reaches the window boundaries the window is centered about
2538 the cursor. The mark is a > (<, *) if the line extends on the right ,
2539 left, or both sides of the window.
2540
2541
2542 The search commands in each edit mode provide access to the history
2543 file. Only strings are matched, not patterns, although a leading ^ in
2544 the string restricts the match to begin at the first character in the
2545 line.
2546
2547
2548 Each of the edit modes has an operation to list the files or commands
2549 that match a partially entered word. When applied to the first word on
2550 the line, or the first word after a ;, |, &, or (, and the word does
2551 not begin with ~ or contain a /, the list of aliases, functions, and
2552 executable commands defined by the PATH variable that could match the
2553 partial word is displayed. Otherwise, the list of files that match the
2554 specified word is displayed. If the partially entered word does not
2555 contain any file expansion characters, a * is appended before
2556 generating these lists. After displaying the generated list, the input
2557 line is redrawn. These operations are called command name listing and
2558 file name listing, respectively. There are additional operations,
2559 referred to as command name completion and file name completion, which
2560 compute the list of matching commands or files, but instead of printing
2561 the list, replace the current word with a complete or partial match.
2562 For file name completion, if the match is unique, a / is appended if
2563 the file is a directory and a space is appended if the file is not a
2564 directory. Otherwise, the longest common prefix for all the matching
2565 files replaces the word. For command name completion, only the portion
2566 of the file names after the last / are used to find the longest command
2567 prefix. If only a single name matches this prefix, then the word is
2568 replaced with the command name followed by a space. When using a TAB
2569 for completion that does not yield a unique match, a subsequent TAB
2570 provides a numbered list of matching alternatives. A specific selection
2571 can be made by entering the selection number followed by a TAB.
2572
2573 Key Bindings
2574 The KEYBD trap can be used to intercept keys as they are typed and
2575 change the characters that are actually seen by the shell. This trap is
2576 executed after each character (or sequence of characters when the first
2577 character is ESC) is entered while reading from a terminal.
2578
2579
2580 The variable .sh.edchar contains the character or character sequence
2581 which generated the trap. Changing the value of .sh.edchar in the trap
2582 action causes the shell to behave as if the new value were entered from
2583 the keyboard rather than the original value. The variable .sh.edcol is
2584 set to the input column number of the cursor at the time of the input.
2585 The variable .sh.edmode is set to ESC when in vi insert mode and is
2586 null otherwise. By prepending ${.sh.editmode} to a value assigned to
2587 .sh.edchar it causes the shell to change to control mode if it is not
2588 already in this mode.
2589
2590
2591 This trap is not invoked for characters entered as arguments to editing
2592 directives, or while reading input for a character search.
2593
2594 emacs Editing Mode
2595 This mode is entered by enabling either the emacs or gmacs option. The
2596 only difference between these two modes is the way they handle ^T. To
2597 edit, the user moves the cursor to the point needing correction and
2598 then inserts or deletes characters or words as needed. All the editing
2599 commands are control characters or escape sequences. The notation for
2600 control characters is caret (^) followed by the character.
2601
2602
2603 For example, ^F is the notation for CTRL/F. This is entered by
2604 depressing f while holding down the CTRL (control) key. The SHIFT key
2605 is not depressed. (The notation ^? indicates the DEL (delete) key.)
2606
2607
2608 The notation for escape sequences is M- followed by a character. For
2609 example, M-f (pronounced Meta f) is entered by depressing ESC (ASCII
2610 033) followed by f. M-F is the notation for ESC followed by F.
2611
2612
2613 All edit commands operate from any place on the line, not just at the
2614 beginning. The RETURN or the LINE FEED key is not entered after edit
2615 commands except when noted.
2616
2617 ^F
2618 Move the cursor forward (right) one character.
2619
2620
2621 M-[C
2622 Move the cursor forward (right) one character.
2623
2624
2625 M-f
2626 Move the cursor forward one word. The emacs editor's idea
2627 of a word is a string of characters consisting of only
2628 letters, digits and underscores.
2629
2630
2631 ^B
2632 Move the cursor backward (left) one character.
2633
2634
2635 M-[D
2636 Move the cursor backward (left) one character.
2637
2638
2639 M-b
2640 Move the cursor backward one word.
2641
2642
2643 ^A
2644 Move the cursor to the beginning of the line.
2645
2646
2647 M-[H
2648 Move the cursor to the beginning of the line.
2649
2650
2651 ^E
2652 Move the cursor to the end of the line.
2653
2654
2655 M-[Y
2656 Move the cursor to the end of line.
2657
2658
2659 ^]char
2660 Move the cursor forward to the character char on the
2661 current line.
2662
2663
2664 M-^]char
2665 Move the cursor backwards to the character char on the
2666 current line.
2667
2668
2669 ^X^X
2670 Interchange the cursor and the mark.
2671
2672
2673 erase
2674 Delete the previous character. The user-defined erase
2675 character is defined by the stty(1) command, and is
2676 usually ^H or #.
2677
2678
2679 lnext
2680 Removes the next character's editing features. The user-
2681 defined literal next character is defined by the stty(1)
2682 command, or is ^V if not defined.
2683
2684
2685 ^D
2686 Delete the current character.
2687
2688
2689 M-d
2690 Delete the current word.
2691
2692
2693 M-^H
2694 MetaBACKSPACE. Delete the previous word.
2695
2696
2697 M-h
2698 Delete the previous word.
2699
2700
2701 M-^?
2702 MetaDEL. Delete the previous word. If your interrupt
2703 character is ^? (DEL, the default), this command does not
2704 work.
2705
2706
2707 ^T
2708 Transpose the current character with the previous
2709 character, and advance the cursor in emacs mode. Transpose
2710 two previous characters in gmacs mode.
2711
2712
2713 ^C
2714 Capitalize the current character.
2715
2716
2717 M-c
2718 Capitalize the current word.
2719
2720
2721 M-l
2722 Change the current word to lower case.
2723
2724
2725 ^K
2726 Delete from the cursor to the end of the line. If preceded
2727 by a numerical parameter whose value is less than the
2728 current cursor position, delete from specified position up
2729 to the cursor. If preceded by a numerical parameter whose
2730 value is greater than the current cursor position, then
2731 delete from cursor up to specified cursor position.
2732
2733
2734 ^W
2735 Kill from the cursor to the mark.
2736
2737
2738 M-p
2739 Push the region from the cursor to the mark on the stack.
2740
2741
2742 kill
2743 Kill the entire current line. The user-defined kill
2744 character is defined by the stty(1) command, usually a ^G
2745 or @. If two kill characters are entered in succession,
2746 all kill characters from then on cause a line feed. This
2747 is useful when using paper terminals.
2748
2749
2750 ^Y
2751 Restore the last item removed from line. Yank the item
2752 back to the line.
2753
2754
2755 ^L
2756 Line feed and print the current line.
2757
2758
2759 M-^L
2760 Clear the screen.
2761
2762
2763 ^@
2764 Null character. Set mark.
2765
2766
2767 M-space
2768 MetaSPACE. Set the mark.
2769
2770
2771 ^J
2772 New line. Execute the current line.
2773
2774
2775 ^M
2776 Return. Execute the current line.
2777
2778
2779 EOF
2780 End-of-file character, normally ^D, is processed as an
2781 end-of-file only if the current line is null.
2782
2783
2784 ^P
2785 Fetch the previous command. Each time ^P is entered the
2786 previous command back in time is accessed. Moves back one
2787 line when it is not on the first line of a multi-line
2788 command.
2789
2790
2791 M-[A
2792 Equivalent to ^P.
2793
2794
2795 M-<
2796 Fetch the least recent (oldest) history line.
2797
2798
2799 M->
2800 Fetch the most recent (youngest) history line.
2801
2802
2803 ^N
2804 Fetch the next command line. Each time ^N is entered the
2805 next command line forward in time is accessed.
2806
2807
2808 M-[B
2809 Equivalent to ^N.
2810
2811
2812 ^Rstring
2813 Reverse search history for a previous command line
2814 containing string. If a parameter of zero is specified,
2815 the search is forward. string is terminated by a RETURN or
2816 NEWLINE. If string is preceded by a ^, the matched line
2817 must begin with string. If string is omitted, then the
2818 next command line containing the most recent string is
2819 accessed. In this case a parameter of zero reverses the
2820 direction of the search.
2821
2822
2823 ^O
2824 Operate. Execute the current line and fetch the next line
2825 relative to current line from the history file.
2826
2827
2828 M-digits
2829 Escape. Define numeric parameter. The digits are taken as
2830 a parameter to the next command. The commands that accept
2831 a parameter are: ^F, ^B, ERASE, ^C, ^D, ^K, ^R, ^P, ^N,
2832 ^], M-., M-, M-^], M-_, M-=, M-b, M-c, M-d, M-f, M-h, M-l,
2833 and M-^H.
2834
2835
2836 M-letter
2837 Soft-key. Search the alias list for an alias by the name
2838 letter. If an alias of letter is defined, insert its value
2839 on the input queue. letter must not be one of the
2840 metafunctions in this section.
2841
2842
2843 M-[letter
2844 Soft key. Search the alias list for an alias by the name
2845 letter. If an alias of this name is defined, insert its
2846 value on the input queue. This can be used to program
2847 function keys on many terminals.
2848
2849
2850 M-.
2851 The last word of the previous command is inserted on the
2852 line. If preceded by a numeric parameter, the value of
2853 this parameter determines which word to insert rather than
2854 the last word.
2855
2856
2857 M-_
2858 Same as M-..
2859
2860
2861 M-*
2862 Attempt filename generation on the current word. As
2863 asterisk is appended if the word does not match any file
2864 or contain any special pattern characters.
2865
2866
2867 M-ESC
2868 Command or file name completion as described in this
2869 manual page.
2870
2871
2872 ^ITAB
2873 Attempts command or file name completion as described in
2874 this manual page. If a partial completion occurs,
2875 repeating this behaves as if M-= were entered. If no
2876 match is found or entered after SPACE, a TAB is inserted.
2877
2878
2879 M-=
2880 If not preceded by a numeric parameter, generates the list
2881 of matching commands or file names as described in this
2882 manual page. Otherwise, the word under the cursor is
2883 replaced by the item corresponding to the value of the
2884 numeric parameter from the most recently generated command
2885 or file list. If the cursor is not on a word, the word is
2886 inserted instead.
2887
2888
2889 ^U
2890 Multiply parameter of next command by 4.
2891
2892
2893 \
2894 Escape the next character. Editing characters, the user's
2895 erase, kill and interrupt (normally ^?) characters can be
2896 entered in a command line or in a search string if
2897 preceded by a \. The \ removes the next character's
2898 editing features, if any.
2899
2900
2901 M-^V
2902 Display the version of the shell.
2903
2904
2905 M-#
2906 If the line does not begin with a #, a # is inserted at
2907 the beginning of the line and after each NEWLINE, and the
2908 line is entered. This causes a comment to be inserted in
2909 the history file. If the line begins with a #, the # is
2910 deleted and one # after each NEWLINE is also deleted.
2911
2912
2913 vi Editing Mode
2914 There are two typing modes. Initially, when you enter a command you are
2915 in the input mode. To edit, the user enters control mode by typing ESC
2916 (033) and moves the cursor to the point needing correction and then
2917 inserts or deletes characters or words as needed. Most control commands
2918 accept an optional repeat count prior to the command.
2919
2920
2921 When in vi mode on most systems, canonical processing is initially
2922 enabled and the command is echoed again if the speed is 1200 baud or
2923 greater and it contains any control characters or less than one second
2924 has elapsed since the prompt was printed. The ESC character terminates
2925 canonical processing for the remainder of the command and the user can
2926 then modify the command line. This scheme has the advantages of
2927 canonical processing with the type-ahead echoing of raw mode.
2928
2929
2930 If the option viraw is also set, the terminal is always have canonical
2931 processing disabled. This mode is implicit for systems that do not
2932 support two alternate end of line delimiters, and might be helpful for
2933 certain terminals.
2934
2935 Input Edit Commands
2936 By default the editor is in input mode.
2937
2938
2939 The following input edit commands are supported:
2940
2941 ERASE
2942 User defined erase character as defined by the stty command,
2943 usually ^H or #. Delete previous character.
2944
2945
2946 ^W
2947 Delete the previous blank separated word. On some systems the
2948 viraw option might be required for this to work.
2949
2950
2951 EOF
2952 As the first character of the line causes the shell to
2953 terminate unless the ignoreeof option is set. Otherwise this
2954 character is ignored.
2955
2956
2957 lnext
2958 User defined literal next character as defined by the stty(1)
2959 or ^V if not defined. Removes the next character's editing
2960 features, if any. On some systems the viraw option might be
2961 required for this to work.
2962
2963
2964 \
2965 Escape the next ERASE or KILL character.
2966
2967
2968 ^I TAB
2969 Attempts command or file name completion as described in this
2970 manual page and returns to input mode. If a partial
2971 completion occurs, repeating this behaves as if = were
2972 entered from control mode. If no match is found or entered
2973 after SPACE, a TAB is inserted.
2974
2975
2976 Motion Edit Commands
2977 The motion edit commands move the cursor.
2978
2979
2980 The following motion edit commands are supported:
2981
2982 [count]l
2983 Move the cursor forward (right) one character.
2984
2985
2986 [count][C
2987 Move the cursor forward (right) one character.
2988
2989
2990 [count]w
2991 Move the cursor forward one alphanumeric word.
2992
2993
2994 [count]W
2995 Move the cursor to the beginning of the next word that
2996 follows a blank.
2997
2998
2999 [count]e
3000 Move the cursor to the end of the word.
3001
3002
3003 [count]E
3004 Move the cursor to the end of the current blank delimited
3005 word.
3006
3007
3008 [count]h
3009 Move the cursor backward (left) one character.
3010
3011
3012 [count][D
3013 Move the cursor backward (left) one character.
3014
3015
3016 [count]b
3017 Move the cursor backward one word.
3018
3019
3020 [count]B
3021 Move the cursor to the preceding blank separated word.
3022
3023
3024 [count]|
3025 Move the cursor to column count.
3026
3027
3028 [count]fc
3029 Find the next character c in the current line.
3030
3031
3032 [count]Fc
3033 Find the previous character c in the current line.
3034
3035
3036 [count]tC
3037 Equivalent to f followed by h.
3038
3039
3040 [count]Tc
3041 Equivalent to F followed by l.
3042
3043
3044 [count];
3045 Repeat count times the last single character find command:
3046 f, F, t, or T.
3047
3048
3049 [count],
3050 Reverse the last single character find command count
3051 times.
3052
3053
3054 0
3055 Move the cursor to the start of line.
3056
3057
3058 ^
3059 Move the cursor to start of line.
3060
3061
3062 [H
3063 Move the cursor to the first non-blank character in the
3064 line.
3065
3066
3067 $
3068 Move the cursor to the end of the line.
3069
3070
3071 [Y
3072 Move the cursor to the end of the line.
3073
3074
3075 %
3076 Moves to balancing (, ), {, }, [, or ]. If cursor is not
3077 on one of the characters described in this section, the
3078 remainder of the line is searched for the first occurrence
3079 of one of the characters first.
3080
3081
3082 Search Edit Commands
3083 The search edit commands access your command history.
3084
3085
3086 The following search edit commands are supported:
3087
3088 [count]k
3089 Fetch the previous command. Each time k is entered, the
3090 previous command back in time is accessed.
3091
3092
3093 [count]-
3094 Fetch the previous command. Each time k is entered, the
3095 previous command back in time is accessed.
3096
3097 Equivalent to k.
3098
3099
3100 [count][A
3101 Fetch the previous command. Each time k is entered, the
3102 previous command back in time is accessed.
3103
3104 Equivalent to k.
3105
3106
3107 [count]j
3108 Fetch the next command. Each time j is entered, the next
3109 command forward in time is accessed.
3110
3111
3112 [count]+
3113 Fetch the next command. Each time j is entered, the next
3114 command forward in time is accessed.
3115
3116 Equivalent to j.
3117
3118
3119 [count][B
3120 Fetch the next command. Each time j is entered, the next
3121 command forward in time is accessed.
3122
3123 Equivalent to j.
3124
3125
3126 [count]G
3127 Fetch command number count. The default is the least
3128 recent history command.
3129
3130
3131 /string
3132 Search backward through history for a previous command
3133 containing string. string is terminated by a RETURN or
3134 NEWLINE. If string is preceded by a ^, the matched line
3135 must begin with string. If string is null, the previous
3136 string is used.
3137
3138
3139 ?string
3140 Search forward through history for a previous command
3141 containing string. string is terminated by a RETURN or
3142 NEWLINE. If string is preceded by a ^, the matched line
3143 must begin with string. If string is null, the previous
3144 string is used.
3145
3146 Same as / except that search is in the forward direction.
3147
3148
3149 n
3150 Search in the backwards direction for the next match of
3151 the last pattern to / or ? commands.
3152
3153
3154 N
3155 Search in the forward direction for next match of the last
3156 pattern to / or ?.
3157
3158
3159 Text Modification Edit Commands
3160 The following commands modify the line:
3161
3162 a
3163 Enter input mode and enter text after the current
3164 character.
3165
3166
3167 A
3168 Append text to the end of the line. Equivalent to
3169 $a.
3170
3171
3172 [count]cmotion
3173 c[count]motion
3174 Delete current character through the character that
3175 motion would move the cursor to and enter input
3176 mode. If motion is c, the entire line is deleted and
3177 input mode entered.
3178
3179
3180 C
3181 Delete the current character through the end of line
3182 and enter input mode. Equivalent to c$.
3183
3184
3185 S
3186 Equivalent to cc.
3187
3188
3189 [count]s
3190 Replace characters under the cursor in input mode.
3191
3192
3193 D[count]dmotion
3194 Delete the current character through the end of
3195 line. Equivalent to d$.
3196
3197
3198 d[count]motion
3199 Delete current character through the character that
3200 motion would move to. If motion is d , the entire
3201 line is deleted.
3202
3203
3204 i
3205 Enter input mode and insert text before the current
3206 character.
3207
3208
3209 I
3210 Insert text before the beginning of the line.
3211 Equivalent to 0i.
3212
3213
3214 [count]P
3215 Place the previous text modification before the
3216 cursor.
3217
3218
3219 [count]p
3220 Place the previous text modification after the
3221 cursor.
3222
3223
3224 R
3225 Enter input mode and replace characters on the
3226 screen with characters you type overlay fashion.
3227
3228
3229 [count]rc
3230 Replace the count characters starting at the current
3231 cursor position with c, and advance the cursor.
3232
3233
3234 [count]x
3235 Delete current character.
3236
3237
3238 [count]X
3239 Delete preceding character.
3240
3241
3242 [count].
3243 Repeat the previous text modification command.
3244
3245
3246 [count]~
3247 Invert the case of the count characters starting at
3248 the current cursor position and advance the cursor.
3249
3250
3251 [count]_
3252 Causes the count word of the previous command to be
3253 appended and input mode entered. The last word is
3254 used if count is omitted.
3255
3256
3257 *
3258 Causes an * to be appended to the current word and
3259 file name generation attempted. If no match is
3260 found, it rings the bell. Otherwise, the word is
3261 replaced by the matching pattern and input mode is
3262 entered.
3263
3264
3265 \
3266 Command or file name completion as described in this
3267 manual page.
3268
3269
3270 Other Edit Commands
3271 The following miscellaneous edit commands are supported:
3272
3273 [count]ymotion
3274 y[count]motion
3275 Yank the current character through the character to
3276 which motion would move the cursor. Put the yanked
3277 characters in the delete buffer. The text and cursor
3278 position are unchanged.
3279
3280
3281 yy
3282 Yank the current line.
3283
3284
3285 Y
3286 Yank the current line from the current cursor
3287 location to the end of the line. Equivalent to y$.
3288
3289
3290 u
3291 Undo the last text modifying command.
3292
3293
3294 U
3295 Undo all the text modifying commands performed on
3296 current line.
3297
3298
3299 [count]V
3300 Return the command :
3301
3302 hist -e ${VISUAL:-${EDITOR:-vi}} count
3303
3304
3305 in the input buffer. If count is omitted, the current
3306 line is used.
3307
3308
3309 ^L
3310 Line feed and print the current line. This command
3311 only works in control mode.
3312
3313
3314 ^J
3315 New line. Execute the current line, regardless of
3316 mode.
3317
3318
3319 ^M
3320 Return. Execute the current line, regardless of mode.
3321
3322
3323 #
3324 If the first character of the command is a # , delete
3325 this # and each # that follows a NEWLINE.
3326
3327 Otherwise, send the line after inserting a # in front
3328 of each line in the command.
3329
3330 This is command is useful for causing the current
3331 line to be inserted in the history as a comment and
3332 un-commenting previously commented commands in the
3333 history file.
3334
3335
3336 [count]=
3337 If count is not specified, generate the list of
3338 matching commands or file names as described in this
3339 manual page.
3340
3341 Otherwise, replace the word at the current cursor
3342 location with the count item from the most recently
3343 generated command or file list. If the cursor is not
3344 on a word, it is inserted after the current cursor
3345 location.
3346
3347
3348 @letter
3349 Search your alias list for an alias by the name
3350 letter. If an alias of this name is defined, insert
3351 its value on the input queue for processing.
3352
3353
3354 ^V
3355 Display version of the shell.
3356
3357
3358 Built-in Commands
3359 The following simple-commands are executed in the shell process. Input
3360 and output redirection is permitted. Unless otherwise indicated, the
3361 output is written on file descriptor 1 and the exit status, when there
3362 is no syntax error, is 0. Except for :, true, false, echo, newgrp, and
3363 login, all built-in commands accept -- to indicate the end of options.
3364 They also interpret the option --man as a request to display the manual
3365 page onto standard error and -? as a help request which prints a usage
3366 message on standard error.
3367
3368
3369 Commands that are preceded by one or two ++ symbols are special built-
3370 in commands and are treated specially in the following ways:
3371
3372 1. Variable assignment lists preceding the command remain in
3373 effect when the command completes.
3374
3375 2. I/O redirections are processed after variable assignments.
3376
3377 3. Errors cause a script that contains them to abort.
3378
3379 4. They are not valid function names.
3380
3381 5. Words following a command preceded by ++ that are in the
3382 format of a variable assignment are expanded with the same
3383 rules as a variable assignment. This means that tilde
3384 substitution is performed after the = sign and field
3385 splitting and file name generation are not performed.
3386
3387 + : [arg ...]
3388
3389 The command only expands parameters.
3390
3391
3392 + . name [arg ...]
3393
3394 If name is a function defined with the function name reserved word
3395 syntax, the function is executed in the current environment (as if
3396 it had been defined with the name() syntax.) Otherwise if name
3397 refers to a file, the file is read in its entirety and the commands
3398 are executed in the current shell environment. The search path
3399 specified by PATH is used to find the directory containing the
3400 file. If any arguments arg are specified, they become the
3401 positional parameters while processing the . command and the
3402 original positional parameters are restored upon completion.
3403 Otherwise the positional parameters are unchanged. The exit status
3404 is the exit status of the last command executed.
3405
3406
3407 ++ alias [-ptx] [name[ =value]] ...
3408
3409 alias with no arguments prints the list of aliases in the form
3410 name=value on standard output. The -p option causes the word alias
3411 to be inserted before each one. When one or more arguments are
3412 specified, an alias is defined for each name whose value is
3413 specified. A trailing space in value causes the next word to be
3414 checked for alias substitution. The obsolete -t option is used to
3415 set and list tracked aliases. The value of a tracked alias is the
3416 full pathname corresponding to the specified name. The value
3417 becomes undefined when the value of PATH is reset but the alias
3418 remains tracked. Without the -t option, for each name in the
3419 argument list for which no value is specified, the name and value
3420 of the alias is printed. The obsolete -x option has no effect. The
3421 exit status is non-zero if a name is specified, but no value, and
3422 no alias has been defined for the name.
3423
3424
3425 bg [ job...]
3426
3427 This command is only on systems that support job control. Puts each
3428 specified job into the background. The current job is put in the
3429 background if job is not specified. See the Jobs section of this
3430 manual page for a description of the format of job.
3431
3432
3433 + break [n]
3434
3435 Exit from the enclosing for, while, until, or select loop, if any.
3436 If n is specified, then break n levels.
3437
3438
3439 builtin [-ds ] [-f file] [name ...]
3440
3441 If name is not specified, and no -f option is specified, the built-
3442 ins are printed on standard output. The -s option prints only the
3443 special built-ins. Otherwise, each name represents the pathname
3444 whose basename is the name of the built-in. The entry point
3445 function name is determined by prepending b_ to the built-in name.
3446 A built-in specified by a pathname will only be executed when that
3447 pathname would be found during the path search. Built-ins found in
3448 libraries loaded via the .paths file will be associate with the
3449 pathname of the directory containing the .paths file.
3450
3451 The ISO C/C++ prototype is bmycommand(int argc, char *argv[], void
3452 *context) for the built-in command mycommand where argv is an array
3453 of argc elements and context is an optional pointer to a Shell_t
3454 structure as described in <ast/shell.h> Special built-ins cannot be
3455 bound to a pathname or deleted. The -d option deletes each of the
3456 specified built-ins. On systems that support dynamic loading, the
3457 -f option names a shared library containing the code for built-ins.
3458 The shared library prefix and/or suffix, which depend on the
3459 system, can be omitted. Once a library is loaded, its symbols
3460 become available for subsequent invocations of builtin. Multiple
3461 libraries can be specified with separate invocations of the builtin
3462 command. Libraries are searched in the reverse order in which they
3463 are specified. When a library is loaded, it looks for a function in
3464 the library whose name is lib_init() and invokes this function with
3465 an argument of 0.
3466
3467
3468 cd [-LP] [arg]
3469 cd [-LP] old new
3470
3471 This command has two forms.
3472
3473 In the first form it changes the current directory to arg. If arg
3474 is a -, the directory is changed to the previous directory. The
3475 shell variable HOME is the default arg. The variable PWD is set to
3476 the current directory. The shell variable CDPATH defines the search
3477 path for the directory containing arg. Alternative directory names
3478 are separated by a colon (:). The default path is NULL (specifying
3479 the current directory). The current directory is specified by a
3480 null path name, which can appear immediately after the equal sign
3481 or between the colon delimiters anywhere else in the path list. If
3482 arg begins with a /, the search path is not used. Otherwise, each
3483 directory in the path is searched for arg.
3484
3485 The second form of cd substitutes the string new for the string old
3486 in the current directory name, PWD, and tries to change to this new
3487 directory. By default, symbolic link names are treated literally
3488 when finding the directory name. This is equivalent to the -L
3489 option. The -P option causes symbolic links to be resolved when
3490 determining the directory. The last instance of -L or -P on the
3491 command line determines which method is used. The cd command cannot
3492 be executed by rksh93.
3493
3494
3495 command [-pvVx] name [arg ...]
3496
3497 Without the -v or -V options, executes name with the arguments
3498 specified by arg.
3499
3500 The -p option causes a default path to be searched rather than the
3501 one defined by the value of PATH. Functions are not searched when
3502 finding name. In addition, if name refers to a special built-in,
3503 none of the special properties associated with the leading daggers
3504 are honored. For example, the predefined alias redirect='command
3505 exec' prevents a script from terminating when an invalid
3506 redirection is specified.
3507
3508 With the -x option, if command execution would result in a failure
3509 because there are too many arguments, errno E2BIG, the shell
3510 invokes command name multiple times with a subset of the arguments
3511 on each invocation. Arguments that occur prior to the first word
3512 that expands to multiple arguments and after the last word that
3513 expands to multiple arguments are passed on each invocation. The
3514 exit status is the maximum invocation exit status.
3515
3516 With the -v option, command is equivalent to the built-in whence
3517 command described in this section. The -V option causes command to
3518 act like whence -v.
3519
3520
3521 +continue [n]
3522
3523 Resumes the next iteration of the enclosing for, while, until, or
3524 select loop. If n is specified, then resume at the nth enclosing
3525 loop.
3526
3527
3528 disown [job...]
3529
3530 Causes the shell not to send a HUP signal to each specified job, or
3531 all active jobs if job is omitted, when a login shell terminates.
3532
3533
3534 echo [arg ...]
3535
3536 When the first arg does not begin with a -, and none of the
3537 arguments contain a backslash (\), prints each of its arguments
3538 separated by a SPACE and terminated by a NEWLINE. Otherwise, the
3539 behavior of echo is system dependent and print or printf described
3540 in this section should be used. See echo(1) for usage and
3541 description.
3542
3543
3544 ++enum [ -i ] type[=(value ...) ]
3545
3546 Creates a declaration command named type that is an integer type
3547 that allows one of the specified values as enumeration names. If
3548 =(value ...) is omitted, then type must be an indexed array
3549 variable with at least two elements and the values are taken from
3550 this array variable. If -i is specified the values are case
3551 insensitive.
3552
3553
3554 +eval [arg ...]
3555
3556 The arguments are read as input to the shell and the resulting
3557 commands are executed.
3558
3559
3560 +exec [-c] [-a name ...] [arg ...]
3561
3562 If arg is specified, the command specified by the arguments is
3563 executed in place of this shell without creating a new process. The
3564 -c option causes the environment to be cleared before applying
3565 variable assignments associated with the exec invocation. The -a
3566 option causes name rather than the first arg, to become argv[0] for
3567 the new process. Input and output arguments can appear and affect
3568 the current process. If arg is not specified, the effect of this
3569 command is to modify file descriptors as prescribed by the
3570 input/output redirection list. In this case, any file descriptor
3571 numbers greater than 2 that are opened with this mechanism are
3572 closed when invoking another program.
3573
3574
3575 +exit [n]
3576
3577 Causes the shell to exit with the exit status specified by n. The
3578 value is the least significant 8 bits of the specified status. If n
3579 is omitted, then the exit status is that of the last command
3580 executed. An end-of-file also causes the shell to exit except for a
3581 shell which has the ignoreeof option turned on. See set.
3582
3583
3584 ++export [-p] [name[=value]] ...
3585
3586 If name is not specified, the names and values of each variable
3587 with the export attribute are printed with the values quoted in a
3588 manner that allows them to be re-entered. The export command is the
3589 same as typeset -x except that if you use export within a function,
3590 no local variable is created. The -p option causes the word export
3591 to be inserted before each one. Otherwise, the specified names are
3592 marked for automatic export to the environment of subsequently-
3593 executed commands.
3594
3595
3596 false
3597
3598 Does nothing, and exits 1. Used with until for infinite loops.
3599
3600
3601 fg [job ...]
3602
3603 This command is only on systems that support job control. Each job
3604 specified is brought to the foreground and waited for in the
3605 specified order. Otherwise, the current job is brought into the
3606 foreground. See Jobs for a description of the format of job.
3607
3608
3609 getconf [name [pathname]]
3610
3611 Prints the current value of the configuration parameter specified
3612 by name. The configuration parameters are defined by the IEEE POSIX
3613 1003.1 and IEEE POSIX 1003.2 standards. See pathconf(2) and
3614 sysconf(3C).
3615
3616 The pathname argument is required for parameters whose value
3617 depends on the location in the file system. If no arguments are
3618 specified, getconf prints the names and values of the current
3619 configuration parameters. The pathname / is used for each of the
3620 parameters that requires pathname.
3621
3622
3623 getopts [ -a name] optstring vname [arg ...]
3624
3625 Checks arg for legal options. If arg is omitted, the positional
3626 parameters are used. An option argument begins with a + or a -. An
3627 option that does not begin with + or - or the argument -- ends the
3628 options. Options beginning with + are only recognized when
3629 optstring begins with a +. optstring contains the letters that
3630 getopts recognizes. If a letter is followed by a :, that option is
3631 expected to have an argument. The options can be separated from the
3632 argument by blanks. The option -?causes getopts to generate a usage
3633 message on standard error. The -a option can be used to specify the
3634 name to use for the usage message, which defaults to $0. getopts
3635 places the next option letter it finds inside variable vname each
3636 time it is invoked. The option letter is prepended with a + when
3637 arg begins with a +. The index of the next arg is stored in OPTIND.
3638 The option argument, if any, gets stored in OPTARG. A leading : in
3639 optstring causes getopts to store the letter of an invalid option
3640 in OPTARG, and to set vname to ? for an unknown option and to: when
3641 a required option argument is missing. Otherwise, getopts prints an
3642 error message. The exit status is non-zero when there are no more
3643 options. There is no way to specify any of the options :, +, -, ?,
3644 [, and ]. The option # can only be specified as the first option.
3645
3646
3647 hist [ -e ename][-nlr] [ first[last ] ]
3648 hist -s [ old=new ] [ command]
3649
3650 In the first form, a range of commands from first to last is
3651 selected from the last HISTSIZE commands that were typed at the
3652 terminal. The arguments first and last can be specified as a
3653 number or as a string. A string is used to locate the most recent
3654 command starting with the specified string. A negative number is
3655 used as an offset to the current command number. If the -l option
3656 is selected, the commands are listed on standard output. Otherwise,
3657 the editor program ename is invoked on a file containing these
3658 keyboard commands. If ename is not supplied, then the value of the
3659 variable HISTEDIT is used. If HISTEDIT is not set, then FCEDIT
3660 (default /bin/ed) is used as the editor. When editing is complete,
3661 the edited command(s) is executed if the changes have been saved.
3662 If last is not specified, then it is set to first. If first is not
3663 specified, the default is the previous command for editing and -16
3664 for listing. The option -r reverses the order of the commands and
3665 the option -n suppresses command numbers when listing. In the
3666 second form, command is interpreted as first described in this
3667 section and defaults to the last command executed. The resulting
3668 command is executed after the optional substitution old=new is
3669 performed.
3670
3671
3672 jobs -lnp [job ...]
3673
3674 Lists information about each specified job, or all active jobs if
3675 job is omitted. The -l option lists process ids in addition to the
3676 normal information. The -n option only displays jobs that have
3677 stopped or exited since last notified. The -p option causes only
3678 the process group to be listed. See Jobs for a description of the
3679 format of job.
3680
3681
3682 kill [-s signame] job ...
3683 kill [-n signum] job ...
3684 kill -Ll [sig ...]
3685
3686 Sends either the TERM (terminate) signal or the specified signal to
3687 the specified jobs or processes. Signals are either specified by
3688 number with the -n option or by name with the -s option (as
3689 specified in <signal.h>, stripped of the prefix `SIG with the
3690 exception that SIGCLD is named CHLD). For backward compatibility,
3691 the n and s can be omitted and the number or name placed
3692 immediately after the -. If the signal being sent is TERM
3693 (terminate) or HUP (hang up), then the job or process is sent a
3694 CONT (continue) signal if it is stopped. The argument job can be
3695 the process id of a process that is not a member of one of the
3696 active jobs. See Jobs for a description of the format of job. In
3697 the third form, kill -l or kill -L, if sig is not specified, the
3698 signal names are listed. The -l option lists only the signal names
3699 whereas -L lists each signal name and corresponding number.
3700 Otherwise, for each sig that is a name, the corresponding signal
3701 number is listed. For each sig that is a number, the signal name
3702 corresponding to the least significant 8 bits of sig is listed.
3703
3704
3705 let [arg ...]
3706
3707 Each arg is a separate arithmetic expression to be evaluated. let
3708 only recognizes octal constants starting with 0 when the set option
3709 letoctal is on. See the Arithmetic Evaluation section of this
3710 manual page for a description of arithmetic expression evaluation.
3711 The exit status is 0 if the value of the last expression is non-
3712 zero, and 1 otherwise.
3713
3714
3715 +newgrp [arg ...]
3716
3717 Equivalent to exec /bin/newgrp arg ...
3718
3719
3720 print [-CRenprsv] [ -u unit] [ -f format ] [ arg ...]
3721
3722 With no options or with option - or --, each arg is printed on
3723 standard output. The -f option causes the arguments to be printed
3724 as described by printf. In this case, any e, n, r, or R options are
3725 ignored. Otherwise, unless the -R or -r, are specified, the
3726 following escape conventions are applied:
3727
3728 \a
3729 Alert character (ASCII 07)
3730
3731
3732 \b
3733 Backspace character (ASCII 010)
3734
3735
3736 \c
3737 Causes print to end without processing more arguments and
3738 not adding a NEWLINE
3739
3740
3741 \f
3742 Form-feed character (ASCII 014)
3743
3744
3745 \n
3746 NEWLINE character (ASCII 012)
3747
3748
3749 \r
3750 RETURN character (ASCII 015)
3751
3752
3753 \t
3754 TAB character (ASCII 011)
3755
3756
3757 \v
3758 Vertical TAB character (ASCII 013)
3759
3760
3761 \E
3762 Escape character (ASCII 033)
3763
3764
3765 \\
3766 Backslash character \
3767
3768
3769 \0x
3770 Character defined by the 1, 2, or 3-digit octal string
3771 specified by x
3772
3773 The -R option prints all subsequent arguments and options other
3774 than -n. The -e causes the escape conventions to be applied This is
3775 the default behavior. It reverses the effect of an earlier -r. The
3776 -p option causes the arguments to be written onto the pipe of the
3777 process spawned with |& instead of standard output. The -v option
3778 treats each arg as a variable name and writes the value in the
3779 printf %B format. The -C option treats each arg as a variable name
3780 and writes the values in the printf %#B format. The -s option
3781 causes the arguments to be written onto the history file instead of
3782 standard output. The -u option can be used to specify a one digit
3783 file descriptor unit number unit on which the output is placed. The
3784 default is 1. If the option -n is used, no NEWLINE is added to the
3785 output.
3786
3787
3788 printf format [arg ...]
3789
3790 The arguments arg are printed on standard output in accordance with
3791 the ANSI-C formatting rules associated with the format string
3792 format. If the number of arguments exceeds the number of format
3793 specifications, the format string is reused to format remaining
3794 arguments. The following extensions can also be used:
3795
3796
3797 %b
3798
3799 A %b format can be used instead of %s to cause escape sequences
3800 in the corresponding arg to be expanded as described in print.
3801
3802
3803 %B
3804
3805 A %B option causes each of the arguments to be treated as
3806 variable names and the binary value of the variables is
3807 printed. This is most useful for variables with an attribute of
3808 b.
3809
3810
3811 %H
3812
3813 A %H format can be used instead of %s to cause characters in
3814 arg that are special in HTML and XML to be output as their
3815 entity name. The alternate flag # formats the output for use as
3816 a URI.
3817
3818
3819 %P
3820
3821 A %P format can be used instead of %s to cause arg to be
3822 interpreted as an extended regular expression and be printed as
3823 a shell pattern.
3824
3825
3826
3827 %R
3828
3829 A %R format can be used instead of %s to cause arg to be
3830 interpreted as a shell pattern and to be printed as an extended
3831 regular expression.
3832
3833
3834 %q
3835
3836 A %q format can be used instead of %s to cause the resulting
3837 string to be quoted in a manner than can be input again to the
3838 shell. When q is preceded by the alternative format specifier,
3839 #, the string is quoted in manner suitable as a field in a .csv
3840 format file.
3841
3842
3843 %(date-format)
3844
3845 A %(date-format)T format can be use to treat an argument as a
3846 date/time string and to format the date/time according to the
3847 date-format as defined for the date(1) command.
3848
3849
3850
3851 %Z
3852
3853 A %Z format outputs a byte whose value is 0.
3854
3855
3856 %d
3857
3858 The precision field of the %d format can be followed by a . and
3859 the output base. In this case, the # flag character causes
3860 base# to be prepended.
3861
3862
3863 #
3864
3865 The # flag, when used with the %d format without an output
3866 base, displays the output in powers of 1000 indicated by one of
3867 the following suffixes: k M G T P E, and when used with the %i
3868 format displays the output in powers of 1024 indicated by one
3869 of the following suffixes: Ki Mi Gi Ti Pi Ei.
3870
3871
3872
3873 =
3874
3875 The = flag centers the output within the specified field width.
3876
3877
3878 L
3879
3880 The L flag, when used with the %c or %s formats, treats
3881 precision as character width instead of byte count.
3882
3883
3884 ,
3885
3886 The , flag, when used with the %d or %f formats, separates
3887 groups of digits with the grouping delimiter (, in groups of 3
3888 in the C locale).
3889
3890
3891
3892
3893 pwd [-LP]
3894
3895 Outputs the value of the current working directory. The -L option
3896 is the default. It prints the logical name of the current
3897 directory. If the -P option is specified, all symbolic links are
3898 resolved from the name. The last instance of -L or -P on the
3899 command line determines which method is used.
3900
3901
3902 read [-ACSprsv] [-d delim] [ -n n] [[ -N n] [[-t timeout] [-u unit]
3903 [vname?prompt] [ vname ... ]
3904
3905 The shell input mechanism. One line is read and is broken up into
3906 fields using the characters in IFS as separators. The escape
3907 character, \, is used to remove any special meaning for the next
3908 character and for line continuation. The -d option causes the read
3909 to continue to the first character of delim rather than NEWLINE.
3910 The -n option causes at most n bytes to read rather a full line but
3911 returns when reading from a slow device as soon as any characters
3912 have been read. The -N option causes exactly n to be read unless an
3913 end-of-file has been encountered or the read times out because of
3914 the -t option. In raw mode, -r, the \ character is not treated
3915 specially. The first field is assigned to the first vname, the
3916 second field to the second vname, etc., with leftover fields
3917 assigned to the last vname. When vname has the binary attribute and
3918 -n or -N is specified, the bytes that are read are stored directly
3919 into the variable. If the -v is specified, then the value of the
3920 first vname is used as a default value when reading from a terminal
3921 device. The -A option causes the variable vname to be unset and
3922 each field that is read to be stored in successive elements of the
3923 indexed array vname. The -C option causes the variable vname to be
3924 read as a compound variable. Blanks will be ignored when finding
3925 the beginning open parenthesis. The -S option causes the line to be
3926 treated like a record in a .csv format file so that double quotes
3927 can be used to allow the delimiter character and the new-line
3928 character to appear within a field. The -p option causes the input
3929 line to be taken from the input pipe of a process spawned by the
3930 shell using |&. If the -s option is present, the input is saved as
3931 a command in the history file. The option -u can be used to specify
3932 a one digit file descriptor unit unit to read from. The file
3933 descriptor can be opened with the exec special built-in command.
3934 The default value of unit n is 0. The option -t is used to specify
3935 a time out in seconds when reading from a terminal or pipe. If
3936 vname is omitted, then REPLY is used as the default vname. An end-
3937 of-file with the -p option causes cleanup for this process so that
3938 another can be spawned. If the first argument contains a ?, the
3939 remainder of this word is used as a prompt on standard error when
3940 the shell is interactive. The exit status is 0 unless an end-of-
3941 file is encountered or read has timed out.
3942
3943
3944 ++readonly [-p] [ vname[=value]] ...
3945
3946 If vname is not specified, the names and values of each variable
3947 with the read-only attribute is printed with the values quoted in a
3948 manner that allows them to be input again. The -p option causes the
3949 word readonly to be inserted before each one. Otherwise, the
3950 specified vnames are marked readonly and these names cannot be
3951 changed by subsequent assignment.
3952
3953
3954 +return [n]
3955
3956 Causes a shell function or script to return to the invoking script
3957 with the exit status specified by n. The value is the least
3958 significant 8 bits of the specified status. If n is omitted, then
3959 the return status is that of the last command executed. If return
3960 is invoked while not in a function or a script, then it behaves the
3961 same as exit.
3962
3963
3964 +set [ +-BCGabefhkmnoprstuvx] [+-o [ option ] ] ... [ +-A vname]
3965 [arg...]
3966
3967 The set command supports the following options:
3968
3969 -a
3970
3971 All subsequent variables that are defined are automatically
3972 exported.
3973
3974
3975 -A
3976
3977 Array assignment. Unset the variable vname and assign values
3978 sequentially from the arg list. If +A is used, the variable
3979 vname is not unset first.
3980
3981
3982 -b
3983
3984 Prints job completion messages as soon as a background job
3985 changes state rather than waiting for the next prompt.
3986
3987
3988 -B
3989
3990 Enable brace pattern field generation. This is the default
3991 behavior.
3992
3993
3994 -C
3995
3996 Prevents redirection (>) from truncating existing files. Files
3997 that are created are opened with the O_EXCL mode. Requires >|
3998 to truncate a file when turned on.
3999
4000
4001 -e
4002
4003 Unless contained in a || or && command, or the command
4004 following an if, while or until command or in the pipeline
4005 following !, if a command has a non-zero exit status, execute
4006 the ERR trap, if set, and exit. This mode is disabled while
4007 reading profiles.
4008
4009
4010 -f
4011
4012 Disables file name generation.
4013
4014
4015 -G
4016
4017 Causes the pattern ** by itself to match files and zero or more
4018 directories and subdirectories when used for file name
4019 generation. If followed by a / only directories and
4020 subdirectories are matched.
4021
4022
4023 -h
4024
4025 Each command becomes a tracked alias when first encountered.
4026
4027
4028 -k
4029
4030 Obsolete. All variable assignment arguments are placed in the
4031 environment for a command, not just those that precede the
4032 command name.
4033
4034
4035 -m
4036
4037 Background jobs run in a separate process group and a line
4038 prints upon completion. The exit status of background jobs is
4039 reported in a completion message. On systems with job control,
4040 this option is turned on automatically for interactive shells.
4041
4042
4043 -n
4044
4045 Read commands and check them for syntax errors, but do not
4046 execute them. Ignored for interactive shells.
4047
4048
4049 -o
4050
4051 If no option name is supplied, the list of options and their
4052 current settings are written to standard output. When invoked
4053 with a +, the options are written in a format that can be input
4054 again to the shell to restore the settings. This option can be
4055 repeated to enable or disable multiple options.
4056
4057 The following argument can be one of the following option
4058 names:
4059
4060 allexport
4061
4062 Same as -a.
4063
4064
4065 bgnice
4066
4067 All background jobs are run at a lower priority. This is
4068 the default mode.
4069
4070
4071 braceexpand
4072
4073 Same as -B.
4074
4075
4076 emacs
4077
4078 Puts you in an emacs style inline editor for command entry.
4079
4080
4081 errexit
4082
4083 Same as -e.
4084
4085
4086 globstar
4087
4088 Same as -G.
4089
4090
4091 gmacs
4092
4093 Puts you in a gmacs style inline editor for command entry.
4094
4095
4096 ignoreeof
4097
4098 The shell does not exit on end-of-file. The command exit
4099 must be used.
4100
4101
4102 keyword
4103
4104 Same as -k.
4105
4106
4107 letoctal
4108
4109 The let command allows octal constants starting with 0.
4110
4111
4112 markdirs
4113
4114 All directory names resulting from file name generation
4115 have a trailing / appended.
4116
4117
4118 monitor
4119
4120 Same as -m.
4121
4122
4123 multiline
4124
4125 The built-in editors use multiple lines on the screen for
4126 lines that are longer than the width of the screen. This
4127 might not work for all terminals.
4128
4129
4130 noclobber
4131
4132 Same as -C.
4133
4134
4135 noexec
4136
4137 Same as -n.
4138
4139
4140 noglob
4141
4142 Same as -f.
4143
4144
4145 nolog
4146
4147 Do not save function definitions in the history file.
4148
4149
4150 notify
4151
4152 Same as -b.
4153
4154
4155 nounset
4156
4157 Same as -u.
4158
4159
4160 pipefail
4161
4162 A pipeline does not complete until all components of the
4163 pipeline have completed, and the return value is the value
4164 of the last non-zero command to fail or zero if no command
4165 has failed.
4166
4167
4168 privileged
4169
4170 Same as -p.
4171
4172
4173 showme
4174
4175 When enabled, simple commands or pipelines preceded by a a
4176 semicolon (;) is displayed as if the xtrace option were
4177 enabled but is not executed. Otherwise, the leading ; is
4178 ignored.
4179
4180
4181 trackall
4182
4183 Same as -h.
4184
4185
4186 verbose
4187
4188 Same as -v.
4189
4190
4191 vi
4192
4193 Puts you in insert mode of a vi style inline editor until
4194 you hit the escape character 033. This puts you in control
4195 mode. A return sends the line.
4196
4197
4198 viraw
4199
4200 Each character is processed as it is typed in vi mode.
4201
4202
4203 xtrace
4204
4205 Same as -x.
4206
4207 If no option name is supplied, the current options settings
4208 are printed.
4209
4210
4211
4212 -p
4213
4214 Disables processing of the $HOME/.profile file and uses the
4215 file /etc/suid_profile instead of the ENV file. This mode is on
4216 whenever the effective uid (gid) is not equal to the real uid
4217 (gid). Turning this off causes the effective uid and gid to be
4218 set to the real uid and gid.
4219
4220
4221 -r
4222
4223 Enables the restricted shell. This option cannot be unset once
4224 set.
4225
4226
4227 -s
4228
4229 Sort the positional parameters lexicographically.
4230
4231
4232 -t
4233
4234 Obsolete. Exit after reading and executing one command.
4235
4236
4237 -u
4238
4239 Treat unset parameters as an error when substituting.
4240
4241
4242 -v
4243
4244 Print shell input lines as they are read.
4245
4246
4247 -x
4248
4249 Print commands and their arguments as they are executed.
4250
4251
4252 --
4253
4254 Do not change any of the options. This is useful in setting $1
4255 to a value beginning with -. If no arguments follow this option
4256 then the positional parameters are unset.
4257
4258 As an obsolete feature, if the first arg is - then the -x and -v
4259 options are turned off and the next arg is treated as the first
4260 argument. Using + rather than - causes these options to be turned
4261 off. These options can also be used upon invocation of the shell.
4262 The current set of options can be found in $-. Unless -A is
4263 specified, the remaining arguments are positional parameters and
4264 are assigned, in order, to $1 $2 .... If no arguments are
4265 specified, then the names and values of all variables are printed
4266 on the standard output.
4267
4268
4269 +shift [n]
4270
4271 The positional parameters from $n+1 ... are renamed $1 ..., the
4272 default n is 1. The parameter n can be any arithmetic expression
4273 that evaluates to a non-negative number less than or equal to $#.
4274
4275
4276 sleep seconds
4277
4278 Suspends execution for the number of decimal seconds or fractions
4279 of a second specified by seconds.
4280
4281
4282 +trap -p [action] [sig] ...
4283
4284 The -p option causes the trap action associated with each trap as
4285 specified by the arguments to be printed with appropriate quoting.
4286 Otherwise, action is processed as if it were an argument to eval
4287 when the shell receives signal(s) sig. Each sig can be specified as
4288 a number or as the name of the signal. Trap commands are executed
4289 in order of signal number. Any attempt to set a trap on a signal
4290 that was ignored on entry to the current shell is ineffective. If
4291 action is omitted and the first sig is a number, or if action is -,
4292 then the trap(s) for each sig are reset to their original values.
4293 If action is the null string then this signal is ignored by the
4294 shell and by the commands it invokes. If sig is ERR then action is
4295 executed whenever a command has a non-zero exit status. If sig is
4296 DEBUG then action is executed before each command. The variable
4297 .sh.command contains the contents of the current command line when
4298 action is running. If sig is 0 or EXIT and the trap statement is
4299 executed inside the body of a function defined with the function
4300 name syntax, then the command action is executed after the function
4301 completes. If sig is 0 or EXIT for a trap set outside any function
4302 then the command action is executed on exit from the shell. If sig
4303 is KEYBD, then action is executed whenever a key is read while in
4304 emacs, gmacs, or vi mode. The trap command with no arguments prints
4305 a list of commands associated with each signal number.
4306
4307
4308 true
4309
4310 Does nothing, and exits 0. Used with while for infinite loops.
4311
4312
4313 ++typeset [+-ACHSfblmnprtux ] [ +-EFLRXZi[n] ] [ +-M [ mapname ] ] [ -T
4314 [ tname=(assign_list) ] ] [ -h str ] [ -a [type] ] [ vname[=value ] ]
4315
4316 Sets attributes and values for shell variables and functions. When
4317 invoked inside a function defined with the function name syntax, a
4318 new instance of the variable vname is created, and the variable's
4319 value and type are restored when the function completes.
4320
4321 Using + rather than - causes these options to be turned off. If no
4322 vname arguments are specified, a list of vnames (and optionally the
4323 values) of the variables is printed. Using + rather than - keeps
4324 the values from being printed.) The -p option causes typeset
4325 followed by the option letters to be printed before each name
4326 rather than the names of the options. If any option other than -p
4327 is specified, only those variables which have all of the specified
4328 options are printed. Otherwise, the vnames and attributes of all
4329 variables that have attributes are printed.
4330
4331 The following list of attributes can be specified:
4332
4333 -a
4334 Declares vname to be an indexed array. This is optional
4335 unless except for compound variable assignments.
4336
4337
4338 -A
4339 Declares vname to be an associative array. Sub-scripts are
4340 strings rather than arithmetic expressions.
4341
4342
4343 -b
4344 The variable can hold any number of bytes of data. The data
4345 can be text or binary. The value is represented by the base64
4346 encoding of the data. If -Z is also specified, the size in
4347 bytes of the data in the buffer is determined by the size
4348 associated with the -Z. If the base64 string assigned results
4349 in more data, it is truncated. Otherwise, it is filled with
4350 bytes whose value is zero. The printf format %B can be used
4351 to output the actual data in this buffer instead of the
4352 base64 encoding of the data.
4353
4354
4355 -C
4356 Causes each vname to be a compound variable. If value names a
4357 compound variable it is copied into vname. Otherwise, it
4358 unsets each vname.
4359
4360
4361 -E
4362 Declares vname to be a double precision floating point
4363 number. If n is non-zero, it defines the number of
4364 significant figures that are used when expanding vname.
4365 Otherwise, ten significant figures is used.
4366
4367
4368 -f
4369 The names refer to function names rather than variable names.
4370 No assignments can be made and the only other valid options
4371 are -t, -u, and -x. The -t option turns on execution tracing
4372 for this function. The -u option causes this function to be
4373 marked undefined. The FPATH variable is searched to find the
4374 function definition when the function is referenced. If no
4375 options other than -f is specified, then the function
4376 definition is displayed on standard output. If +f is
4377 specified, then a line containing the function name followed
4378 by a shell comment containing the line number and path name
4379 of the file where this function was defined, if any, is
4380 displayed. The names refer to function names rather than
4381 variable names. No assignments can be made and the only
4382 other valid options are -S, -t, -u and -x. The -S can be
4383 used with discipline functions defined in a type to indicate
4384 that the function is static. For a static function, the same
4385 method will be used by all instances of that type no matter
4386 which instance references it. In addition, it can only use
4387 value of variables from the original type definition. These
4388 discipline functions cannot be redefined in any type
4389 instance. The -t option turns on execution tracing for this
4390 function. The -u option causes this function to be marked
4391 undefined. The FPATH variable will be searched to find the
4392 function definition when the function is referenced. If no
4393 options other than -f is specified, then the function
4394 definition will be displayed on standard output. If +f is
4395 specified, then a line containing the function name followed
4396 by a shell comment containing the line number and path name
4397 of the file where this function was defined, if any, is
4398 displayed. The exit status can be used to determine whether
4399 the function is defined so that typeset -f .sh.math. name
4400 will return 0 when math function name is defined and non-zero
4401 otherwise.
4402
4403 The -i attribute cannot be specified with -f.
4404
4405
4406 -F
4407 Declares vname to be a double precision floating point
4408 number. If n is non-zero, it defines the number of places
4409 after the decimal point that are used when expanding vname.
4410 Otherwise ten places after the decimal point is used.
4411
4412
4413 -h
4414 Used within type definitions to add information when
4415 generating information about the sub-variable on the man
4416 page. It is ignored when used outside of a type definition.
4417 When used with -f the information is associated with the
4418 corresponding discipline function.
4419
4420
4421 -H
4422 This option provides UNIX to hostname file mapping on non-
4423 UNIX machines.
4424
4425
4426 -i
4427 Declares vname to be represented internally as integer. The
4428 right hand side of an assignment is evaluated as an
4429 arithmetic expression when assigning to an integer. If n is
4430 non-zero, it defines the output arithmetic base, otherwise
4431 the output base is ten.
4432
4433 The -i attribute cannot be specified along with -R, -L, -Z,
4434 or -f.
4435
4436
4437 -l
4438 Used with -i, -E or -F to indicate long integer, or long
4439 float. Otherwise, all upper-case characters are converted to
4440 lower-case. The upper-case option, -u, is turned off.
4441 Equivalent to -M tolower.
4442
4443
4444 -L
4445 Left justify and remove leading blanks from value. If n is
4446 non-zero, it defines the width of the field, otherwise it is
4447 determined by the width of the value of first assignment.
4448 When the variable is assigned to, it is filled on the right
4449 with blanks or truncated, if necessary, to fit into the
4450 field. The -R option is turned off.
4451
4452 The -i attribute cannot be specified with -L.
4453
4454
4455 -m
4456 moves or renames the variable. The value is the name of a
4457 variable whose value will be moved to vname. The original
4458 variable will be unset. Cannot be used with any other
4459 options.
4460
4461
4462 -M
4463 Use the character mapping mapping such as tolower and toupper
4464 when assigning a value to each of the specified operands.
4465 When mapping is specified and there are not operands, all
4466 variables that use this mapping are written to standard
4467 output. When mapping is omitted and there are no operands,
4468 all mapped variables are written to standard output.
4469
4470
4471 -n
4472 Declares vname to be a reference to the variable whose name
4473 is defined by the value of variable vname. This is usually
4474 used to reference a variable inside a function whose name has
4475 been passed as an argument.
4476
4477
4478 -p
4479 The name, attributes and values for the given vname are
4480 written on standard output in a form that can be used as
4481 shell input. If +p is specified, then the values are not
4482 displayed.
4483
4484
4485 -R
4486 Right justify and fill with leading blanks. If n is non-zero,
4487 it defines the width of the field, otherwise it is determined
4488 by the width of the value of first assignment. The field is
4489 left filled with blanks or truncated from the end if the
4490 variable is reassigned. The -L option is turned off.
4491
4492 The -i attribute cannot be specified with -R.
4493
4494
4495 -r
4496 The specified vnames are marked read-only and these names
4497 cannot be changed by subsequent assignment.
4498
4499
4500 -S
4501 When used within the assign_list of a type definition, it
4502 causes the specified sub-variable to be shared by all
4503 instances of the type. When used inside a function defined
4504 with the function reserved word, the specified variables will
4505 have function static scope. Otherwise, the variable is unset
4506 prior to processing the assignment list.
4507
4508
4509 -t
4510 Tags the variables. Tags are user definable and have no
4511 special meaning to the shell.
4512
4513
4514 -T
4515 If followed by tname, it creates a type named by tname using
4516 the compound assignment assign_list to tname. Otherwise, it
4517 writes all the type definitions to standard output.
4518
4519
4520 -u
4521 When given along with -i specifies unsigned integer.
4522 Otherwise, all lower-case characters are converted to upper-
4523 case. The lower-case option, -l, is turned off. Equivalent
4524 to -M toupper.
4525
4526
4527 -x
4528 The specified vnames are marked for automatic export to the
4529 environment of subsequently-executed commands. Variables
4530 whose names contain a . cannot be exported.
4531
4532
4533 -X
4534 Declares vname to be a double precision floating point number
4535 and expands using the %a format of ISO-C99. If n is non-
4536 zero, it defines the number of hex digits after the radix
4537 point that is used when expanding vname. The default is 10.
4538
4539
4540 -Z
4541 Right justify and fill with leading zeros if the first non-
4542 blank character is a digit and the -L option has not been
4543 set. Remove leading zeros if the -L option is also set. If n
4544 is non-zero, it defines the width of the field, otherwise it
4545 is determined by the width of the value of first assignment.
4546
4547 The -i attribute cannot be specified with -Z.
4548
4549
4550
4551 ulimit [-HSacdfmnpstv] [ limit]
4552
4553 Set or display a resource limit. Many systems do not support one or
4554 more of these limits. The limit for a specified resource is set
4555 when limit is specified. The value of limit can be a number in the
4556 unit specified with each resource, or the value unlimited. When
4557 more than one resource is specified, then the limit name and unit
4558 is printed before the value.
4559
4560 If no option is specified, -f is assumed.
4561
4562 The following are the available resource limits:
4563
4564 -a
4565 Lists all of the current resource limits.
4566
4567
4568 -c
4569 The number of 512-byte blocks on the size of core dumps.
4570
4571
4572 -d
4573 The number of Kbytes on the size of the data area.
4574
4575
4576 -f
4577 The number of 512-byte blocks on files that can be written by
4578 the current process or by child processes (files of any size
4579 can be read).
4580
4581
4582 -H
4583 Specifies a hard limit for the specified resource.
4584
4585 A hard limit cannot be increased once it is set.
4586
4587 If neither the -H nor -S option is specified, the limit
4588 applies to both. The current resource limit is printed when
4589 limit is omitted. In this case, the soft limit is printed
4590 unless -H is specified.
4591
4592
4593 -m
4594 The number of Kbytes on the size of physical memory.
4595
4596
4597 -n
4598 The number of file descriptors plus 1.
4599
4600
4601 -p
4602 The number of 512-byte blocks for pipe buffering.
4603
4604
4605 -s
4606 The number of Kbytes on the size of the stack area.
4607
4608
4609 -S
4610 Specifies a soft limit for the specified resource.
4611
4612 A soft limit can be increased up to the value of the hard
4613 limit.
4614
4615 If neither the -H nor -S option is specified, the limit
4616 applies to both. The current resource limit is printed when
4617 limit is omitted. In this case, the soft limit is printed
4618 unless -H is specified.
4619
4620
4621 -t
4622 The number of CPU seconds to be used by each process.
4623
4624
4625 -v
4626 The number of Kbytes for virtual memory.
4627
4628
4629
4630 umask [-S][mask]
4631
4632 The user file-creation mask is set to mask. mask can either be an
4633 octal number or a symbolic value as described in chmod(1).
4634
4635 If a symbolic value is specified, the new umask value is the
4636 complement of the result of applying mask to the complement of the
4637 previous umask value. If mask is omitted, the current value of the
4638 mask is printed. The -S option causes the mode to be printed as a
4639 symbolic value. Otherwise, the mask is printed in octal.
4640
4641 See umask(2)
4642
4643
4644 +unalias [-a] name
4645
4646 The aliases specified by the list of names are removed from the
4647 alias list. The -a option causes all the aliases to be unset.
4648
4649
4650 +unset [-fnv] vname
4651
4652 The variables specified by the list of vnames are unassigned, i.e.,
4653 their values and attributes are erased. Read-only variables cannot
4654 be unset. If the -f option is set, then the names refer to function
4655 names. If the -v option is set, then the names refer to variable
4656 names. The -f option overrides -v. If -n is set and name is a name
4657 reference, then name is unset rather than the variable that it
4658 references. The default is equivalent to -v. Unsetting LINENO,
4659 MAILCHECK, OPTARG, OPTIND, RANDOM, SECONDS, TMOUT, and _ removes
4660 their special meaning even if they are subsequently assigned to.
4661
4662
4663 wait [job]
4664
4665 Wait for the specified job and report its termination status. If
4666 job is not specified, then all currently active child processes are
4667 waited for. The exit status from this command is that of the last
4668 process waited for if job is specified; otherwise it is zero. See
4669 Jobs for a description of the format of job.
4670
4671
4672 whence [-afpv] name ...
4673
4674 For each name, indicate how it would be interpreted if used as a
4675 command name. The -v option produces a more verbose report. The -f
4676 option skips the search for functions. The -p option does a path
4677 search for name even if name is an alias, a function, or a reserved
4678 word. The -a option is similar to the -v option but causes all
4679 interpretations of the specified name to be reported.
4680
4681
4682 Invocation
4683 If the shell is invoked by exec(2), and the first character of argument
4684 zero ($0) is -, then the shell is assumed to be a login shell and
4685 commands are read from /etc/profile and then from either .profile in
4686 the current directory or $HOME/.profile, if either file exists. Next,
4687 for interactive shells, commands are read first from /etc/ksh.kshrc,
4688 and then from the file named by performing parameter expansion, command
4689 substitution, and arithmetic substitution on the value of the
4690 environment variable ENV if the file exists. If the -s option is not
4691 present and arg and a file by the name of arg exists, then it reads and
4692 executes this script. Otherwise, if the first arg does not contain a /,
4693 a path search is performed on the first arg to determine the name of
4694 the script to execute. The script arg must have execute permission and
4695 any setuid and setgid settings are ignored. If the script is not found
4696 on the path, arg is processed as if it named a built-in command or
4697 function.
4698
4699
4700 Commands are then read as described, and the following options are
4701 interpreted by the shell when it is invoked:
4702
4703 -c
4704 If the -c option is present, then commands are read from
4705 the first arg. Any remaining arguments become positional
4706 parameters starting at 0.
4707
4708
4709 -D
4710 A list of all double quoted strings that are preceded by
4711 a $ is printed on standard output and the shell exits.
4712 This set of strings is subject to language translation
4713 when the locale is not C or POSIX. No commands are
4714 executed.
4715
4716
4717 -E
4718 Reads the file named by the ENV variable or by
4719 $HOME/.kshrc if not defined after the profiles.
4720
4721
4722 -i
4723 If the -i option is present or if the shell input and
4724 output are attached to a terminal (as told by
4725 tcgetattr(3C), this shell is interactive. In this case
4726 TERM is ignored (so that kill 0 does not kill an
4727 interactive shell) and INTR is caught and ignored (so
4728 that wait is interruptible). In all cases, QUIT is
4729 ignored by the shell.
4730
4731
4732 -P
4733 If -P or -o profile is present, the shell is a profile
4734 shell (see pfexec(1)).
4735
4736
4737 -R filename
4738 The -R filename option is used to generate a cross
4739 reference database that can be used by a separate
4740 utility to find definitions and references for variables
4741 and commands.
4742
4743
4744 -r
4745 If the -r option is present, the shell is a restricted
4746 shell.
4747
4748
4749 -s
4750 If the -s option is present or if no arguments remain,
4751 then commands are read from the standard input. Shell
4752 output, except for the output of the Special Commands
4753 listed, is written to file descriptor 2.
4754
4755
4756
4757 The remaining options and arguments are described under the set
4758 command. An optional - as the first argument is ignored.
4759
4760 rksh93 Only
4761 rksh93 is used to set up login names and execution environments whose
4762 capabilities are more controlled than those of the standard shell.
4763
4764
4765 The actions of rksh93 are identical to those of ksh93, except that the
4766 following are disallowed:
4767
4768 o Unsetting the restricted option
4769
4770 o Changing directory. See cd(1).
4771
4772 o Setting or unsetting the value or attributes of SHELL, ENV,
4773 FPATH, or PATH
4774
4775 o Specifying path or command names containing /,
4776
4777 o Redirecting output (>, >|, <>, and >>).
4778
4779 o Adding or deleting built-in commands.
4780
4781 o Using command -p to invoke a command.
4782
4783
4784 These restrictions are enforced after .profile and the ENV files are
4785 interpreted.
4786
4787
4788 When a command to be executed is found to be a shell procedure, rksh93
4789 invokes ksh93 to execute it. Thus, it is possible to provide to the
4790 end-user shell procedures that have access to the full power of the
4791 standard shell, while imposing a limited menu of commands. This scheme
4792 assumes that the end-user does not have write and execute permissions
4793 in the same directory. The net effect of these rules is that the writer
4794 of the .profile has complete control over user actions, by performing
4795 guaranteed setup actions and leaving the user in an appropriate
4796 directory (probably not the login directory). The system administrator
4797 often sets up a directory of commands, for example, /usr/rbin, that can
4798 be safely invoked by rksh.
4799
4800 USAGE
4801 See largefile(5) for the description of the behavior of ksh93 and
4802 rksh93 when encountering files greater than or equal to 2 Gbyte ( 2^31
4803 bytes).
4804
4805 EXIT STATUS
4806 The following exit values are returned:
4807
4808 non-zero
4809
4810 Returns non-zero when errors, such as syntax errors, are detected
4811 by the shell.
4812
4813 If the shell is being used non-interactively, then execution of the
4814 shell file is abandoned unless the error occurs inside a sub-shell
4815 in which case the sub-shell is abandoned.
4816
4817
4818 exit status of last command executed
4819
4820 Returns the exit status of the last command executed.
4821
4822 Run time errors detected by the shell are reported by printing the
4823 command or function name and the error condition. If the line
4824 number that the error occurred on is greater than one, then the
4825 line number is also printed in square brackets ([]) after the
4826 command or function name.
4827
4828 See the ksh93 exit command for additional details.
4829
4830
4831 FILES
4832 /etc/profile
4833
4834 The system initialization file, executed for login shells.
4835
4836
4837 /etc/ksh.kshrc
4838
4839 The system wide startup file, executed for interactive shells.
4840
4841
4842 $HOME/.profile
4843
4844 The personal initialization file, executed for login shells after
4845 /etc/profile.
4846
4847
4848 $HOME/.kshrc
4849
4850 Default personal initialization file, executed after
4851 /etc/ksh.kshrc, for interactive shells when ENV is not set.
4852
4853
4854 /etc/suid-profile
4855
4856 Alternative initialization file, executed instead of the personal
4857 initialization file when the real and effective user or group id do
4858 not match.
4859
4860
4861 /dev/null
4862
4863 NULL device.
4864
4865
4866 AUTHORS
4867 David Korn, dgk@research.att.com
4868
4869 ATTRIBUTES
4870 See attributes(5) for descriptions of the following attributes:
4871
4872
4873
4874
4875 +--------------------+-----------------+
4876 | ATTRIBUTE TYPE | ATTRIBUTE VALUE |
4877 +--------------------+-----------------+
4878 |Interface Stability | See below. |
4879 +--------------------+-----------------+
4880
4881
4882 The scripting interface is Uncommitted. The environment variables,
4883 .paths feature, and editing modes are Volatile.
4884
4885 SEE ALSO
4886 cat(1), cd(1), chmod(1), cut(1), date(1), egrep(1), echo(1), egrep(1),
4887 env(1), fgrep(1), grep(1), login(1), newgrp(1), paste(1), pfexec(1),
4888 printf(1), stty(1), test(1), umask(1), vi(1), dup(2), exec(2), fork(2),
4889 ioctl(2), lseek(2), pathconf(2), pipe(2), sysconf(3C), ulimit(2),
4890 umask(2), rand(3C), tcgetattr(3C), wait(3C), a.out(4), profile(4),
4891 attributes(5), environ(5), largefile(5), standards(5)
4892
4893
4894 Bolsky, Morris I. and Korn, David G., The New KornShell Command and
4895 Programming Language, Prentice Hall, 1995.
4896
4897
4898 POSIX-Part 2: Shell and Utilities, IEEE Std 1003.2-1992, ISO/IEC
4899 9945-2, IEEE, 1993.
4900
4901 NOTES
4902 ksh93 scripts should choose shell function names outside the namespace
4903 used by reserved keywords of the ISO C99, C++ and JAVA languages to
4904 avoid collisions with future enhancements to ksh93.
4905
4906
4907 If a command is executed, and then a command with the same name is
4908 installed in a directory in the search path before the directory where
4909 the original command was found, the shell continues to exec the
4910 original command. Use the -t option of the alias command to correct
4911 this situation.
4912
4913
4914 Some very old shell scripts contain a caret (^) as a synonym for the
4915 pipe character (|).
4916
4917
4918 Using the hist built-in command within a compound command causes the
4919 whole command to disappear from the history file.
4920
4921
4922 The built-in command . file reads the whole file before any commands
4923 are executed. alias and unalias commands in the file do not apply to
4924 any commands defined in the file.
4925
4926
4927 Traps are not processed while a job is waiting for a foreground
4928 process. Thus, a trap on CHLD is not executed until the foreground job
4929 terminates.
4930
4931
4932 It is a good idea to leave a space after the comma operator in
4933 arithmetic expressions to prevent the comma from being interpreted as
4934 the decimal point character in certain locales.
4935
4936
4937 There might be some restrictions on creating a .paths file which is
4938 portable across other operating systems.
4939
4940
4941 If the system supports the 64-bit instruction set, /bin/ksh93 executes
4942 the 64-bit version of ksh93.
4943
4944
4945
4946 January 6, 2020 KSH93(1)