Jari Aalto | 726f638 | 1996-08-26 18:22:31 +0000 | [diff] [blame] | 1 | This file is reserved.def, in which the shell reserved words are defined. |
| 2 | It has no direct C file production, but defines builtins for the Bash |
| 3 | builtin help command. |
| 4 | |
Jari Aalto | 3185942 | 2009-01-12 13:36:28 +0000 | [diff] [blame] | 5 | Copyright (C) 1987-2009 Free Software Foundation, Inc. |
Jari Aalto | 726f638 | 1996-08-26 18:22:31 +0000 | [diff] [blame] | 6 | |
| 7 | This file is part of GNU Bash, the Bourne Again SHell. |
| 8 | |
Jari Aalto | 3185942 | 2009-01-12 13:36:28 +0000 | [diff] [blame] | 9 | Bash is free software: you can redistribute it and/or modify |
| 10 | it under the terms of the GNU General Public License as published by |
| 11 | the Free Software Foundation, either version 3 of the License, or |
| 12 | (at your option) any later version. |
Jari Aalto | 726f638 | 1996-08-26 18:22:31 +0000 | [diff] [blame] | 13 | |
Jari Aalto | 3185942 | 2009-01-12 13:36:28 +0000 | [diff] [blame] | 14 | Bash is distributed in the hope that it will be useful, |
| 15 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 16 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 17 | GNU General Public License for more details. |
Jari Aalto | 726f638 | 1996-08-26 18:22:31 +0000 | [diff] [blame] | 18 | |
Jari Aalto | 3185942 | 2009-01-12 13:36:28 +0000 | [diff] [blame] | 19 | You should have received a copy of the GNU General Public License |
| 20 | along with Bash. If not, see <http://www.gnu.org/licenses/>. |
Jari Aalto | 726f638 | 1996-08-26 18:22:31 +0000 | [diff] [blame] | 21 | |
| 22 | $BUILTIN for |
Jari Aalto | 3185942 | 2009-01-12 13:36:28 +0000 | [diff] [blame] | 23 | $SHORT_DOC for NAME [in WORDS ... ] ; do COMMANDS; done |
| 24 | Execute commands for each member in a list. |
| 25 | |
Jari Aalto | 726f638 | 1996-08-26 18:22:31 +0000 | [diff] [blame] | 26 | The `for' loop executes a sequence of commands for each member in a |
| 27 | list of items. If `in WORDS ...;' is not present, then `in "$@"' is |
| 28 | assumed. For each element in WORDS, NAME is set to that element, and |
| 29 | the COMMANDS are executed. |
Jari Aalto | 3185942 | 2009-01-12 13:36:28 +0000 | [diff] [blame] | 30 | |
| 31 | Exit Status: |
| 32 | Returns the status of the last command executed. |
Jari Aalto | 726f638 | 1996-08-26 18:22:31 +0000 | [diff] [blame] | 33 | $END |
| 34 | |
Jari Aalto | 7117c2d | 2002-07-17 14:10:11 +0000 | [diff] [blame] | 35 | $BUILTIN for (( |
| 36 | $DOCNAME arith_for |
| 37 | $SHORT_DOC for (( exp1; exp2; exp3 )); do COMMANDS; done |
Jari Aalto | 3185942 | 2009-01-12 13:36:28 +0000 | [diff] [blame] | 38 | Arithmetic for loop. |
| 39 | |
Jari Aalto | 7117c2d | 2002-07-17 14:10:11 +0000 | [diff] [blame] | 40 | Equivalent to |
| 41 | (( EXP1 )) |
| 42 | while (( EXP2 )); do |
| 43 | COMMANDS |
| 44 | (( EXP3 )) |
| 45 | done |
| 46 | EXP1, EXP2, and EXP3 are arithmetic expressions. If any expression is |
| 47 | omitted, it behaves as if it evaluates to 1. |
Jari Aalto | 3185942 | 2009-01-12 13:36:28 +0000 | [diff] [blame] | 48 | |
| 49 | Exit Status: |
| 50 | Returns the status of the last command executed. |
Jari Aalto | 7117c2d | 2002-07-17 14:10:11 +0000 | [diff] [blame] | 51 | $END |
| 52 | |
Jari Aalto | 726f638 | 1996-08-26 18:22:31 +0000 | [diff] [blame] | 53 | $BUILTIN select |
| 54 | $SHORT_DOC select NAME [in WORDS ... ;] do COMMANDS; done |
Jari Aalto | 3185942 | 2009-01-12 13:36:28 +0000 | [diff] [blame] | 55 | Select words from a list and execute commands. |
| 56 | |
Jari Aalto | 726f638 | 1996-08-26 18:22:31 +0000 | [diff] [blame] | 57 | The WORDS are expanded, generating a list of words. The |
| 58 | set of expanded words is printed on the standard error, each |
| 59 | preceded by a number. If `in WORDS' is not present, `in "$@"' |
| 60 | is assumed. The PS3 prompt is then displayed and a line read |
| 61 | from the standard input. If the line consists of the number |
| 62 | corresponding to one of the displayed words, then NAME is set |
| 63 | to that word. If the line is empty, WORDS and the prompt are |
| 64 | redisplayed. If EOF is read, the command completes. Any other |
| 65 | value read causes NAME to be set to null. The line read is saved |
| 66 | in the variable REPLY. COMMANDS are executed after each selection |
Jari Aalto | 7117c2d | 2002-07-17 14:10:11 +0000 | [diff] [blame] | 67 | until a break command is executed. |
Jari Aalto | 3185942 | 2009-01-12 13:36:28 +0000 | [diff] [blame] | 68 | |
| 69 | Exit Status: |
| 70 | Returns the status of the last command executed. |
Jari Aalto | 726f638 | 1996-08-26 18:22:31 +0000 | [diff] [blame] | 71 | $END |
| 72 | |
Jari Aalto | ccc6cda | 1996-12-23 17:02:34 +0000 | [diff] [blame] | 73 | $BUILTIN time |
Jari Aalto | 3185942 | 2009-01-12 13:36:28 +0000 | [diff] [blame] | 74 | $SHORT_DOC time [-p] pipeline |
| 75 | Report time consumed by pipeline's execution. |
| 76 | |
Jari Aalto | ccc6cda | 1996-12-23 17:02:34 +0000 | [diff] [blame] | 77 | Execute PIPELINE and print a summary of the real time, user CPU time, |
| 78 | and system CPU time spent executing PIPELINE when it terminates. |
Jari Aalto | 3185942 | 2009-01-12 13:36:28 +0000 | [diff] [blame] | 79 | |
| 80 | Options: |
| 81 | -p print the timing summary in the portable Posix format |
| 82 | |
| 83 | The value of the TIMEFORMAT variable is used as the output format. |
| 84 | |
| 85 | Exit Status: |
| 86 | The return status is the return status of PIPELINE. |
Jari Aalto | ccc6cda | 1996-12-23 17:02:34 +0000 | [diff] [blame] | 87 | $END |
| 88 | |
Jari Aalto | 726f638 | 1996-08-26 18:22:31 +0000 | [diff] [blame] | 89 | $BUILTIN case |
| 90 | $SHORT_DOC case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac |
Jari Aalto | 3185942 | 2009-01-12 13:36:28 +0000 | [diff] [blame] | 91 | Execute commands based on pattern matching. |
| 92 | |
Jari Aalto | 726f638 | 1996-08-26 18:22:31 +0000 | [diff] [blame] | 93 | Selectively execute COMMANDS based upon WORD matching PATTERN. The |
| 94 | `|' is used to separate multiple patterns. |
Jari Aalto | 3185942 | 2009-01-12 13:36:28 +0000 | [diff] [blame] | 95 | |
| 96 | Exit Status: |
| 97 | Returns the status of the last command executed. |
Jari Aalto | 726f638 | 1996-08-26 18:22:31 +0000 | [diff] [blame] | 98 | $END |
| 99 | |
| 100 | $BUILTIN if |
| 101 | $SHORT_DOC if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else COMMANDS; ] fi |
Jari Aalto | 3185942 | 2009-01-12 13:36:28 +0000 | [diff] [blame] | 102 | Execute commands based on conditional. |
| 103 | |
Jari Aalto | 95732b4 | 2005-12-07 14:08:12 +0000 | [diff] [blame] | 104 | The `if COMMANDS' list is executed. If its exit status is zero, then the |
| 105 | `then COMMANDS' list is executed. Otherwise, each `elif COMMANDS' list is |
| 106 | executed in turn, and if its exit status is zero, the corresponding |
| 107 | `then COMMANDS' list is executed and the if command completes. Otherwise, |
| 108 | the `else COMMANDS' list is executed, if present. The exit status of the |
| 109 | entire construct is the exit status of the last command executed, or zero |
| 110 | if no condition tested true. |
Jari Aalto | 3185942 | 2009-01-12 13:36:28 +0000 | [diff] [blame] | 111 | |
| 112 | Exit Status: |
| 113 | Returns the status of the last command executed. |
Jari Aalto | 726f638 | 1996-08-26 18:22:31 +0000 | [diff] [blame] | 114 | $END |
| 115 | |
| 116 | $BUILTIN while |
| 117 | $SHORT_DOC while COMMANDS; do COMMANDS; done |
Jari Aalto | 3185942 | 2009-01-12 13:36:28 +0000 | [diff] [blame] | 118 | Execute commands as long as a test succeeds. |
| 119 | |
Jari Aalto | 726f638 | 1996-08-26 18:22:31 +0000 | [diff] [blame] | 120 | Expand and execute COMMANDS as long as the final command in the |
| 121 | `while' COMMANDS has an exit status of zero. |
Jari Aalto | 3185942 | 2009-01-12 13:36:28 +0000 | [diff] [blame] | 122 | |
| 123 | Exit Status: |
| 124 | Returns the status of the last command executed. |
Jari Aalto | 726f638 | 1996-08-26 18:22:31 +0000 | [diff] [blame] | 125 | $END |
| 126 | |
| 127 | $BUILTIN until |
| 128 | $SHORT_DOC until COMMANDS; do COMMANDS; done |
Jari Aalto | 3185942 | 2009-01-12 13:36:28 +0000 | [diff] [blame] | 129 | Execute commands as long as a test does not succeed. |
| 130 | |
Jari Aalto | 726f638 | 1996-08-26 18:22:31 +0000 | [diff] [blame] | 131 | Expand and execute COMMANDS as long as the final command in the |
| 132 | `until' COMMANDS has an exit status which is not zero. |
Jari Aalto | 3185942 | 2009-01-12 13:36:28 +0000 | [diff] [blame] | 133 | |
| 134 | Exit Status: |
| 135 | Returns the status of the last command executed. |
Jari Aalto | 726f638 | 1996-08-26 18:22:31 +0000 | [diff] [blame] | 136 | $END |
| 137 | |
Jari Aalto | 17345e5 | 2009-02-19 22:21:29 +0000 | [diff] [blame] | 138 | $BUILTIN coproc |
| 139 | $SHORT_DOC coproc [NAME] command [redirections] |
| 140 | Create a coprocess named NAME. |
| 141 | |
| 142 | Execute COMMAND asynchronously, with the standard output and standard |
| 143 | input of the command connected via a pipe to file descriptors assigned |
| 144 | to indices 0 and 1 of an array variable NAME in the executing shell. |
| 145 | The default NAME is "COPROC". |
| 146 | |
| 147 | Exit Status: |
| 148 | Returns the exit status of COMMAND. |
| 149 | $END |
| 150 | |
Jari Aalto | 726f638 | 1996-08-26 18:22:31 +0000 | [diff] [blame] | 151 | $BUILTIN function |
Jari Aalto | 3185942 | 2009-01-12 13:36:28 +0000 | [diff] [blame] | 152 | $SHORT_DOC function name { COMMANDS ; } or name () { COMMANDS ; } |
| 153 | Define shell function. |
| 154 | |
| 155 | Create a shell function named NAME. When invoked as a simple command, |
| 156 | NAME runs COMMANDs in the calling shell's context. When NAME is invoked, |
| 157 | the arguments are passed to the function as $1...$n, and the function's |
| 158 | name is in $FUNCNAME. |
| 159 | |
| 160 | Exit Status: |
| 161 | Returns success unless NAME is readonly. |
Jari Aalto | 726f638 | 1996-08-26 18:22:31 +0000 | [diff] [blame] | 162 | $END |
| 163 | |
| 164 | $BUILTIN { ... } |
| 165 | $DOCNAME grouping_braces |
Jari Aalto | b72432f | 1999-02-19 17:11:39 +0000 | [diff] [blame] | 166 | $SHORT_DOC { COMMANDS ; } |
Jari Aalto | 3185942 | 2009-01-12 13:36:28 +0000 | [diff] [blame] | 167 | Group commands as a unit. |
| 168 | |
Jari Aalto | 726f638 | 1996-08-26 18:22:31 +0000 | [diff] [blame] | 169 | Run a set of commands in a group. This is one way to redirect an |
| 170 | entire set of commands. |
Jari Aalto | 3185942 | 2009-01-12 13:36:28 +0000 | [diff] [blame] | 171 | |
| 172 | Exit Status: |
| 173 | Returns the status of the last command executed. |
Jari Aalto | 726f638 | 1996-08-26 18:22:31 +0000 | [diff] [blame] | 174 | $END |
| 175 | |
| 176 | $BUILTIN % |
| 177 | $DOCNAME fg_percent |
Jari Aalto | 3185942 | 2009-01-12 13:36:28 +0000 | [diff] [blame] | 178 | $SHORT_DOC job_spec [&] |
| 179 | Resume job in foreground. |
| 180 | |
Jari Aalto | 95732b4 | 2005-12-07 14:08:12 +0000 | [diff] [blame] | 181 | Equivalent to the JOB_SPEC argument to the `fg' command. Resume a |
| 182 | stopped or background job. JOB_SPEC can specify either a job name |
| 183 | or a job number. Following JOB_SPEC with a `&' places the job in |
| 184 | the background, as if the job specification had been supplied as an |
| 185 | argument to `bg'. |
Jari Aalto | 3185942 | 2009-01-12 13:36:28 +0000 | [diff] [blame] | 186 | |
| 187 | Exit Status: |
| 188 | Returns the status of the resumed job. |
Jari Aalto | 726f638 | 1996-08-26 18:22:31 +0000 | [diff] [blame] | 189 | $END |
| 190 | |
Jari Aalto | 7117c2d | 2002-07-17 14:10:11 +0000 | [diff] [blame] | 191 | $BUILTIN (( ... )) |
| 192 | $DOCNAME arith |
| 193 | $SHORT_DOC (( expression )) |
Jari Aalto | 3185942 | 2009-01-12 13:36:28 +0000 | [diff] [blame] | 194 | Evaluate arithmetic expression. |
| 195 | |
Jari Aalto | 7117c2d | 2002-07-17 14:10:11 +0000 | [diff] [blame] | 196 | The EXPRESSION is evaluated according to the rules for arithmetic |
| 197 | evaluation. Equivalent to "let EXPRESSION". |
Jari Aalto | 3185942 | 2009-01-12 13:36:28 +0000 | [diff] [blame] | 198 | |
| 199 | Exit Status: |
| 200 | Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise. |
Jari Aalto | 7117c2d | 2002-07-17 14:10:11 +0000 | [diff] [blame] | 201 | $END |
| 202 | |
| 203 | $BUILTIN [[ ... ]] |
| 204 | $DOCNAME conditional |
| 205 | $SHORT_DOC [[ expression ]] |
Jari Aalto | 3185942 | 2009-01-12 13:36:28 +0000 | [diff] [blame] | 206 | Execute conditional command. |
| 207 | |
Jari Aalto | 7117c2d | 2002-07-17 14:10:11 +0000 | [diff] [blame] | 208 | Returns a status of 0 or 1 depending on the evaluation of the conditional |
| 209 | expression EXPRESSION. Expressions are composed of the same primaries used |
Jari Aalto | 3185942 | 2009-01-12 13:36:28 +0000 | [diff] [blame] | 210 | by the `test' builtin, and may be combined using the following operators: |
Jari Aalto | 7117c2d | 2002-07-17 14:10:11 +0000 | [diff] [blame] | 211 | |
Jari Aalto | 3185942 | 2009-01-12 13:36:28 +0000 | [diff] [blame] | 212 | ( EXPRESSION ) Returns the value of EXPRESSION |
| 213 | ! EXPRESSION True if EXPRESSION is false; else false |
| 214 | EXPR1 && EXPR2 True if both EXPR1 and EXPR2 are true; else false |
| 215 | EXPR1 || EXPR2 True if either EXPR1 or EXPR2 is true; else false |
Jari Aalto | 7117c2d | 2002-07-17 14:10:11 +0000 | [diff] [blame] | 216 | |
Jari Aalto | 3185942 | 2009-01-12 13:36:28 +0000 | [diff] [blame] | 217 | When the `==' and `!=' operators are used, the string to the right of |
| 218 | the operator is used as a pattern and pattern matching is performed. |
| 219 | When the `=~' operator is used, the string to the right of the operator |
| 220 | is matched as a regular expression. |
| 221 | |
| 222 | The && and || operators do not evaluate EXPR2 if EXPR1 is sufficient to |
Jari Aalto | 7117c2d | 2002-07-17 14:10:11 +0000 | [diff] [blame] | 223 | determine the expression's value. |
Jari Aalto | 3185942 | 2009-01-12 13:36:28 +0000 | [diff] [blame] | 224 | |
| 225 | Exit Status: |
| 226 | 0 or 1 depending on value of EXPRESSION. |
Jari Aalto | 7117c2d | 2002-07-17 14:10:11 +0000 | [diff] [blame] | 227 | $END |
| 228 | |
Jari Aalto | 726f638 | 1996-08-26 18:22:31 +0000 | [diff] [blame] | 229 | $BUILTIN variables |
| 230 | $DOCNAME variable_help |
Jari Aalto | 3185942 | 2009-01-12 13:36:28 +0000 | [diff] [blame] | 231 | $SHORT_DOC variables - Names and meanings of some shell variables |
| 232 | Common shell variable names and usage. |
| 233 | |
Jari Aalto | 0628567 | 2006-10-10 14:15:34 +0000 | [diff] [blame] | 234 | BASH_VERSION Version information for this Bash. |
| 235 | CDPATH A colon-separated list of directories to search |
Jari Aalto | 3185942 | 2009-01-12 13:36:28 +0000 | [diff] [blame] | 236 | for directories given as arguments to `cd'. |
Jari Aalto | ccc6cda | 1996-12-23 17:02:34 +0000 | [diff] [blame] | 237 | GLOBIGNORE A colon-separated list of patterns describing filenames to |
| 238 | be ignored by pathname expansion. |
Jari Aalto | 726f638 | 1996-08-26 18:22:31 +0000 | [diff] [blame] | 239 | #if defined (HISTORY) |
Jari Aalto | 0628567 | 2006-10-10 14:15:34 +0000 | [diff] [blame] | 240 | HISTFILE The name of the file where your command history is stored. |
| 241 | HISTFILESIZE The maximum number of lines this file can contain. |
| 242 | HISTSIZE The maximum number of history lines that a running |
Jari Aalto | 726f638 | 1996-08-26 18:22:31 +0000 | [diff] [blame] | 243 | shell can access. |
| 244 | #endif /* HISTORY */ |
Jari Aalto | 0628567 | 2006-10-10 14:15:34 +0000 | [diff] [blame] | 245 | HOME The complete pathname to your login directory. |
Jari Aalto | ccc6cda | 1996-12-23 17:02:34 +0000 | [diff] [blame] | 246 | HOSTNAME The name of the current host. |
Jari Aalto | 0628567 | 2006-10-10 14:15:34 +0000 | [diff] [blame] | 247 | HOSTTYPE The type of CPU this version of Bash is running under. |
| 248 | IGNOREEOF Controls the action of the shell on receipt of an EOF |
Jari Aalto | 726f638 | 1996-08-26 18:22:31 +0000 | [diff] [blame] | 249 | character as the sole input. If set, then the value |
| 250 | of it is the number of EOF characters that can be seen |
| 251 | in a row on an empty line before the shell will exit |
| 252 | (default 10). When unset, EOF signifies the end of input. |
Jari Aalto | ccc6cda | 1996-12-23 17:02:34 +0000 | [diff] [blame] | 253 | MACHTYPE A string describing the current system Bash is running on. |
Jari Aalto | 726f638 | 1996-08-26 18:22:31 +0000 | [diff] [blame] | 254 | MAILCHECK How often, in seconds, Bash checks for new mail. |
| 255 | MAILPATH A colon-separated list of filenames which Bash checks |
| 256 | for new mail. |
Jari Aalto | 0628567 | 2006-10-10 14:15:34 +0000 | [diff] [blame] | 257 | OSTYPE The version of Unix this version of Bash is running on. |
| 258 | PATH A colon-separated list of directories to search when |
Jari Aalto | 726f638 | 1996-08-26 18:22:31 +0000 | [diff] [blame] | 259 | looking for commands. |
Jari Aalto | 0628567 | 2006-10-10 14:15:34 +0000 | [diff] [blame] | 260 | PROMPT_COMMAND A command to be executed before the printing of each |
Jari Aalto | 726f638 | 1996-08-26 18:22:31 +0000 | [diff] [blame] | 261 | primary prompt. |
Jari Aalto | 0628567 | 2006-10-10 14:15:34 +0000 | [diff] [blame] | 262 | PS1 The primary prompt string. |
| 263 | PS2 The secondary prompt string. |
Jari Aalto | ccc6cda | 1996-12-23 17:02:34 +0000 | [diff] [blame] | 264 | PWD The full pathname of the current directory. |
| 265 | SHELLOPTS A colon-separated list of enabled shell options. |
Jari Aalto | 0628567 | 2006-10-10 14:15:34 +0000 | [diff] [blame] | 266 | TERM The name of the current terminal type. |
Jari Aalto | ccc6cda | 1996-12-23 17:02:34 +0000 | [diff] [blame] | 267 | TIMEFORMAT The output format for timing statistics displayed by the |
| 268 | `time' reserved word. |
Jari Aalto | 0628567 | 2006-10-10 14:15:34 +0000 | [diff] [blame] | 269 | auto_resume Non-null means a command word appearing on a line by |
Jari Aalto | 726f638 | 1996-08-26 18:22:31 +0000 | [diff] [blame] | 270 | itself is first looked for in the list of currently |
| 271 | stopped jobs. If found there, that job is foregrounded. |
| 272 | A value of `exact' means that the command word must |
| 273 | exactly match a command in the list of stopped jobs. A |
| 274 | value of `substring' means that the command word must |
| 275 | match a substring of the job. Any other value means that |
| 276 | the command must be a prefix of a stopped job. |
| 277 | #if defined (HISTORY) |
Jari Aalto | 726f638 | 1996-08-26 18:22:31 +0000 | [diff] [blame] | 278 | # if defined (BANG_HISTORY) |
Jari Aalto | 0628567 | 2006-10-10 14:15:34 +0000 | [diff] [blame] | 279 | histchars Characters controlling history expansion and quick |
Jari Aalto | 726f638 | 1996-08-26 18:22:31 +0000 | [diff] [blame] | 280 | substitution. The first character is the history |
| 281 | substitution character, usually `!'. The second is |
| 282 | the `quick substitution' character, usually `^'. The |
| 283 | third is the `history comment' character, usually `#'. |
| 284 | # endif /* BANG_HISTORY */ |
Jari Aalto | ccc6cda | 1996-12-23 17:02:34 +0000 | [diff] [blame] | 285 | HISTIGNORE A colon-separated list of patterns used to decide which |
Jari Aalto | f73dda0 | 2001-11-13 17:56:06 +0000 | [diff] [blame] | 286 | commands should be saved on the history list. |
Jari Aalto | 726f638 | 1996-08-26 18:22:31 +0000 | [diff] [blame] | 287 | #endif /* HISTORY */ |
| 288 | $END |