1/* builtins.c -- the built in shell commands. */ 2 3/* This file is manufactured by ./mkbuiltins, and should not be 4 edited by hand. See the source to mkbuiltins for details. */ 5 6/* Copyright (C) 1987-2002 Free Software Foundation, Inc. 7 8 This file is part of GNU Bash, the Bourne Again SHell. 9 10 Bash is free software; you can redistribute it and/or modify it 11 under the terms of the GNU General Public License as published by 12 the Free Software Foundation; either version 2, or (at your option) 13 any later version. 14 15 Bash is distributed in the hope that it will be useful, but WITHOUT 16 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 17 or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public 18 License for more details. 19 20 You should have received a copy of the GNU General Public License 21 along with Bash; see the file COPYING. If not, write to the Free 22 Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ 23 24/* The list of shell builtins. Each element is name, function, flags, 25 long-doc, short-doc. The long-doc field contains a pointer to an array 26 of help lines. The function takes a WORD_LIST *; the first word in the 27 list is the first arg to the command. The list has already had word 28 expansion performed. 29 30 Functions which need to look at only the simple commands (e.g. 31 the enable_builtin ()), should ignore entries where 32 (array[i].function == (sh_builtin_func_t *)NULL). Such entries are for 33 the list of shell reserved control structures, like `if' and `while'. 34 The end of the list is denoted with a NULL name field. */ 35 36#include "../builtins.h" 37#include "builtext.h" 38#include "bashintl.h" 39 40struct builtin static_shell_builtins[] = { 41#if defined (ALIAS) 42 { "alias", alias_builtin, BUILTIN_ENABLED | STATIC_BUILTIN | ASSIGNMENT_BUILTIN, alias_doc, 43 "alias [-p] [name[=value] ... ]", (char *)NULL }, 44#endif /* ALIAS */ 45#if defined (ALIAS) 46 { "unalias", unalias_builtin, BUILTIN_ENABLED | STATIC_BUILTIN, unalias_doc, 47 "unalias [-a] name [name ...]", (char *)NULL }, 48#endif /* ALIAS */ 49#if defined (READLINE) 50 { "bind", bind_builtin, BUILTIN_ENABLED | STATIC_BUILTIN, bind_doc, 51 "bind [-lpvsPVS] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-x keyseq:shell-command] [keyseq:readline-function or readline-command]", (char *)NULL }, 52#endif /* READLINE */ 53 { "break", break_builtin, BUILTIN_ENABLED | STATIC_BUILTIN | SPECIAL_BUILTIN, break_doc, 54 "break [n]", (char *)NULL }, 55 { "continue", continue_builtin, BUILTIN_ENABLED | STATIC_BUILTIN | SPECIAL_BUILTIN, continue_doc, 56 "continue [n]", (char *)NULL }, 57 { "builtin", builtin_builtin, BUILTIN_ENABLED | STATIC_BUILTIN, builtin_doc, 58 "builtin [shell-builtin [arg ...]]", (char *)NULL }, 59#if defined (DEBUGGER) 60 { "caller", caller_builtin, BUILTIN_ENABLED | STATIC_BUILTIN, caller_doc, 61 "caller [EXPR]", (char *)NULL }, 62#endif /* DEBUGGER */ 63 { "cd", cd_builtin, BUILTIN_ENABLED | STATIC_BUILTIN, cd_doc, 64 "cd [-L|-P] [dir]", (char *)NULL }, 65 { "pwd", pwd_builtin, BUILTIN_ENABLED | STATIC_BUILTIN, pwd_doc, 66 "pwd [-LP]", (char *)NULL }, 67 { ":", colon_builtin, BUILTIN_ENABLED | STATIC_BUILTIN | SPECIAL_BUILTIN, colon_doc, 68 ":", (char *)NULL }, 69 { "true", colon_builtin, BUILTIN_ENABLED | STATIC_BUILTIN, true_doc, 70 "true", (char *)NULL }, 71 { "false", false_builtin, BUILTIN_ENABLED | STATIC_BUILTIN, false_doc, 72 "false", (char *)NULL }, 73 { "command", command_builtin, BUILTIN_ENABLED | STATIC_BUILTIN, command_doc, 74 "command [-pVv] command [arg ...]", (char *)NULL }, 75 { "declare", declare_builtin, BUILTIN_ENABLED | STATIC_BUILTIN | ASSIGNMENT_BUILTIN, declare_doc, 76 "declare [-afFirtx] [-p] [name[=value] ...]", (char *)NULL }, 77 { "typeset", declare_builtin, BUILTIN_ENABLED | STATIC_BUILTIN | ASSIGNMENT_BUILTIN, typeset_doc, 78 "typeset [-afFirtx] [-p] name[=value] ...", (char *)NULL }, 79 { "local", local_builtin, BUILTIN_ENABLED | STATIC_BUILTIN | ASSIGNMENT_BUILTIN, local_doc, 80 "local name[=value] ...", (char *)NULL }, 81#if defined (V9_ECHO) 82 { "echo", echo_builtin, BUILTIN_ENABLED | STATIC_BUILTIN, echo_doc, 83 "echo [-neE] [arg ...]", (char *)NULL }, 84#endif /* V9_ECHO */ 85#if !defined (V9_ECHO) 86 { "echo", echo_builtin, BUILTIN_ENABLED | STATIC_BUILTIN, echo_doc, 87 "echo [-n] [arg ...]", (char *)NULL }, 88#endif /* !V9_ECHO */ 89 { "enable", enable_builtin, BUILTIN_ENABLED | STATIC_BUILTIN, enable_doc, 90 "enable [-pnds] [-a] [-f filename] [name ...]", (char *)NULL }, 91 { "eval", eval_builtin, BUILTIN_ENABLED | STATIC_BUILTIN | SPECIAL_BUILTIN, eval_doc, 92 "eval [arg ...]", (char *)NULL }, 93 { "getopts", getopts_builtin, BUILTIN_ENABLED | STATIC_BUILTIN, getopts_doc, 94 "getopts optstring name [arg]", (char *)NULL }, 95 { "exec", exec_builtin, BUILTIN_ENABLED | STATIC_BUILTIN | SPECIAL_BUILTIN, exec_doc, 96 "exec [-cl] [-a name] file [redirection ...]", (char *)NULL }, 97 { "exit", exit_builtin, BUILTIN_ENABLED | STATIC_BUILTIN | SPECIAL_BUILTIN, exit_doc, 98 "exit [n]", (char *)NULL }, 99 { "logout", logout_builtin, BUILTIN_ENABLED | STATIC_BUILTIN, logout_doc, 100 "logout", (char *)NULL }, 101#if defined (HISTORY) 102 { "fc", fc_builtin, BUILTIN_ENABLED | STATIC_BUILTIN, fc_doc, 103 "fc [-e ename] [-nlr] [first] [last] or fc -s [pat=rep] [cmd]", (char *)NULL }, 104#endif /* HISTORY */ 105#if defined (JOB_CONTROL) 106 { "fg", fg_builtin, BUILTIN_ENABLED | STATIC_BUILTIN, fg_doc, 107 "fg [job_spec]", (char *)NULL }, 108#endif /* JOB_CONTROL */ 109#if defined (JOB_CONTROL) 110 { "bg", bg_builtin, BUILTIN_ENABLED | STATIC_BUILTIN, bg_doc, 111 "bg [job_spec ...]", (char *)NULL }, 112#endif /* JOB_CONTROL */ 113 { "hash", hash_builtin, BUILTIN_ENABLED | STATIC_BUILTIN, hash_doc, 114 "hash [-lr] [-p pathname] [-dt] [name ...]", (char *)NULL }, 115#if defined (HELP_BUILTIN) 116 { "help", help_builtin, BUILTIN_ENABLED | STATIC_BUILTIN, help_doc, 117 "help [-s] [pattern ...]", (char *)NULL }, 118#endif /* HELP_BUILTIN */ 119#if defined (HISTORY) 120 { "history", history_builtin, BUILTIN_ENABLED | STATIC_BUILTIN, history_doc, 121 "history [-c] [-d offset] [n] or history -awrn [filename] or history -ps arg [arg...]", (char *)NULL }, 122#endif /* HISTORY */ 123#if defined (JOB_CONTROL) 124 { "jobs", jobs_builtin, BUILTIN_ENABLED | STATIC_BUILTIN, jobs_doc, 125 "jobs [-lnprs] [jobspec ...] or jobs -x command [args]", (char *)NULL }, 126#endif /* JOB_CONTROL */ 127#if defined (JOB_CONTROL) 128 { "disown", disown_builtin, BUILTIN_ENABLED | STATIC_BUILTIN, disown_doc, 129 "disown [-h] [-ar] [jobspec ...]", (char *)NULL }, 130#endif /* JOB_CONTROL */ 131 { "kill", kill_builtin, BUILTIN_ENABLED | STATIC_BUILTIN, kill_doc, 132 "kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]", (char *)NULL }, 133 { "let", let_builtin, BUILTIN_ENABLED | STATIC_BUILTIN, let_doc, 134 "let arg [arg ...]", (char *)NULL }, 135 { "read", read_builtin, BUILTIN_ENABLED | STATIC_BUILTIN, read_doc, 136 "read [-ers] [-u fd] [-t timeout] [-p prompt] [-a array] [-n nchars] [-d delim] [name ...]", (char *)NULL }, 137 { "return", return_builtin, BUILTIN_ENABLED | STATIC_BUILTIN | SPECIAL_BUILTIN, return_doc, 138 "return [n]", (char *)NULL }, 139 { "set", set_builtin, BUILTIN_ENABLED | STATIC_BUILTIN | SPECIAL_BUILTIN, set_doc, 140 "set [--abefhkmnptuvxBCHP] [-o option] [arg ...]", (char *)NULL }, 141 { "unset", unset_builtin, BUILTIN_ENABLED | STATIC_BUILTIN | SPECIAL_BUILTIN, unset_doc, 142 "unset [-f] [-v] [name ...]", (char *)NULL }, 143 { "export", export_builtin, BUILTIN_ENABLED | STATIC_BUILTIN | SPECIAL_BUILTIN | ASSIGNMENT_BUILTIN, export_doc, 144 "export [-nf] [name[=value] ...] or export -p", (char *)NULL }, 145 { "readonly", readonly_builtin, BUILTIN_ENABLED | STATIC_BUILTIN | SPECIAL_BUILTIN | ASSIGNMENT_BUILTIN, readonly_doc, 146 "readonly [-af] [name[=value] ...] or readonly -p", (char *)NULL }, 147 { "shift", shift_builtin, BUILTIN_ENABLED | STATIC_BUILTIN | SPECIAL_BUILTIN, shift_doc, 148 "shift [n]", (char *)NULL }, 149 { "source", source_builtin, BUILTIN_ENABLED | STATIC_BUILTIN | SPECIAL_BUILTIN, source_doc, 150 "source filename [arguments]", (char *)NULL }, 151 { ".", source_builtin, BUILTIN_ENABLED | STATIC_BUILTIN | SPECIAL_BUILTIN, dot_doc, 152 ". filename [arguments]", (char *)NULL }, 153#if defined (JOB_CONTROL) 154 { "suspend", suspend_builtin, BUILTIN_ENABLED | STATIC_BUILTIN, suspend_doc, 155 "suspend [-f]", (char *)NULL }, 156#endif /* JOB_CONTROL */ 157 { "test", test_builtin, BUILTIN_ENABLED | STATIC_BUILTIN, test_doc, 158 "test [expr]", (char *)NULL }, 159 { "[", test_builtin, BUILTIN_ENABLED | STATIC_BUILTIN, test_bracket_doc, 160 "[ arg... ]", (char *)NULL }, 161 { "times", times_builtin, BUILTIN_ENABLED | STATIC_BUILTIN | SPECIAL_BUILTIN, times_doc, 162 "times", (char *)NULL }, 163 { "trap", trap_builtin, BUILTIN_ENABLED | STATIC_BUILTIN | SPECIAL_BUILTIN, trap_doc, 164 "trap [-lp] [arg signal_spec ...]", (char *)NULL }, 165 { "type", type_builtin, BUILTIN_ENABLED | STATIC_BUILTIN, type_doc, 166 "type [-afptP] name [name ...]", (char *)NULL }, 167#if !defined (_MINIX) 168 { "ulimit", ulimit_builtin, BUILTIN_ENABLED | STATIC_BUILTIN, ulimit_doc, 169 "ulimit [-SHacdfilmnpqstuvx] [limit]", (char *)NULL }, 170#endif /* !_MINIX */ 171 { "umask", umask_builtin, BUILTIN_ENABLED | STATIC_BUILTIN, umask_doc, 172 "umask [-p] [-S] [mode]", (char *)NULL }, 173#if defined (JOB_CONTROL) 174 { "wait", wait_builtin, BUILTIN_ENABLED | STATIC_BUILTIN, wait_doc, 175 "wait [n]", (char *)NULL }, 176#endif /* JOB_CONTROL */ 177#if !defined (JOB_CONTROL) 178 { "wait", wait_builtin, BUILTIN_ENABLED | STATIC_BUILTIN, wait_doc, 179 "wait [n]", (char *)NULL }, 180#endif /* !JOB_CONTROL */ 181 { "for", (sh_builtin_func_t *)0x0, BUILTIN_ENABLED | STATIC_BUILTIN, for_doc, 182 "for NAME [in WORDS ... ;] do COMMANDS; done", (char *)NULL }, 183 { "for ((", (sh_builtin_func_t *)0x0, BUILTIN_ENABLED | STATIC_BUILTIN, arith_for_doc, 184 "for (( exp1; exp2; exp3 )); do COMMANDS; done", (char *)NULL }, 185 { "select", (sh_builtin_func_t *)0x0, BUILTIN_ENABLED | STATIC_BUILTIN, select_doc, 186 "select NAME [in WORDS ... ;] do COMMANDS; done", (char *)NULL }, 187 { "time", (sh_builtin_func_t *)0x0, BUILTIN_ENABLED | STATIC_BUILTIN, time_doc, 188 "time [-p] PIPELINE", (char *)NULL }, 189 { "case", (sh_builtin_func_t *)0x0, BUILTIN_ENABLED | STATIC_BUILTIN, case_doc, 190 "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac", (char *)NULL }, 191 { "if", (sh_builtin_func_t *)0x0, BUILTIN_ENABLED | STATIC_BUILTIN, if_doc, 192 "if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else COMMANDS; ] fi", (char *)NULL }, 193 { "while", (sh_builtin_func_t *)0x0, BUILTIN_ENABLED | STATIC_BUILTIN, while_doc, 194 "while COMMANDS; do COMMANDS; done", (char *)NULL }, 195 { "until", (sh_builtin_func_t *)0x0, BUILTIN_ENABLED | STATIC_BUILTIN, until_doc, 196 "until COMMANDS; do COMMANDS; done", (char *)NULL }, 197 { "function", (sh_builtin_func_t *)0x0, BUILTIN_ENABLED | STATIC_BUILTIN, function_doc, 198 "function NAME { COMMANDS ; } or NAME () { COMMANDS ; }", (char *)NULL }, 199 { "{ ... }", (sh_builtin_func_t *)0x0, BUILTIN_ENABLED | STATIC_BUILTIN, grouping_braces_doc, 200 "{ COMMANDS ; }", (char *)NULL }, 201 { "%", (sh_builtin_func_t *)0x0, BUILTIN_ENABLED | STATIC_BUILTIN, fg_percent_doc, 202 "JOB_SPEC [&]", (char *)NULL }, 203 { "(( ... ))", (sh_builtin_func_t *)0x0, BUILTIN_ENABLED | STATIC_BUILTIN, arith_doc, 204 "(( expression ))", (char *)NULL }, 205 { "[[ ... ]]", (sh_builtin_func_t *)0x0, BUILTIN_ENABLED | STATIC_BUILTIN, conditional_doc, 206 "[[ expression ]]", (char *)NULL }, 207 { "variables", (sh_builtin_func_t *)0x0, BUILTIN_ENABLED | STATIC_BUILTIN, variable_help_doc, 208 "variables - Some variable names and meanings", (char *)NULL }, 209#if defined (PUSHD_AND_POPD) 210 { "pushd", pushd_builtin, BUILTIN_ENABLED | STATIC_BUILTIN, pushd_doc, 211 "pushd [dir | +N | -N] [-n]", (char *)NULL }, 212#endif /* PUSHD_AND_POPD */ 213#if defined (PUSHD_AND_POPD) 214 { "popd", popd_builtin, BUILTIN_ENABLED | STATIC_BUILTIN, popd_doc, 215 "popd [+N | -N] [-n]", (char *)NULL }, 216#endif /* PUSHD_AND_POPD */ 217#if defined (PUSHD_AND_POPD) 218 { "dirs", dirs_builtin, BUILTIN_ENABLED | STATIC_BUILTIN, dirs_doc, 219 "dirs [-clpv] [+N] [-N]", (char *)NULL }, 220#endif /* PUSHD_AND_POPD */ 221 { "shopt", shopt_builtin, BUILTIN_ENABLED | STATIC_BUILTIN, shopt_doc, 222 "shopt [-pqsu] [-o long-option] optname [optname...]", (char *)NULL }, 223 { "printf", printf_builtin, BUILTIN_ENABLED | STATIC_BUILTIN, printf_doc, 224 "printf [-v var] format [arguments]", (char *)NULL }, 225#if defined (PROGRAMMABLE_COMPLETION) 226 { "complete", complete_builtin, BUILTIN_ENABLED | STATIC_BUILTIN, complete_doc, 227 "complete [-abcdefgjksuv] [-pr] [-o option] [-A action] [-G globpat] [-W wordlist] [-P prefix] [-S suffix] [-X filterpat] [-F function] [-C command] [name ...]", (char *)NULL }, 228#endif /* PROGRAMMABLE_COMPLETION */ 229#if defined (PROGRAMMABLE_COMPLETION) 230 { "compgen", compgen_builtin, BUILTIN_ENABLED | STATIC_BUILTIN, compgen_doc, 231 "compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-P prefix] [-S suffix] [-X filterpat] [-F function] [-C command] [word]", (char *)NULL }, 232#endif /* PROGRAMMABLE_COMPLETION */ 233 { (char *)0x0, (sh_builtin_func_t *)0x0, 0, (char **)0x0, (char *)0x0 } 234}; 235 236struct builtin *shell_builtins = static_shell_builtins; 237struct builtin *current_builtin; 238 239int num_shell_builtins = 240 sizeof (static_shell_builtins) / sizeof (struct builtin) - 1; 241#if defined (ALIAS) 242char * const alias_doc[] = { 243#if defined (HELP_BUILTIN) 244N_("`alias' with no arguments or with the -p option prints the list\n\ 245 of aliases in the form alias NAME=VALUE on standard output.\n\ 246 Otherwise, an alias is defined for each NAME whose VALUE is given.\n\ 247 A trailing space in VALUE causes the next word to be checked for\n\ 248 alias substitution when the alias is expanded. Alias returns\n\ 249 true unless a NAME is given for which no alias has been defined."), 250#endif /* HELP_BUILTIN */ 251 (char *)NULL 252}; 253#endif /* ALIAS */ 254#if defined (ALIAS) 255char * const unalias_doc[] = { 256#if defined (HELP_BUILTIN) 257N_("Remove NAMEs from the list of defined aliases. If the -a option is given,\n\ 258 then remove all alias definitions."), 259#endif /* HELP_BUILTIN */ 260 (char *)NULL 261}; 262#endif /* ALIAS */ 263#if defined (READLINE) 264char * const bind_doc[] = { 265#if defined (HELP_BUILTIN) 266N_("Bind a key sequence to a Readline function or a macro, or set\n\ 267 a Readline variable. The non-option argument syntax is equivalent\n\ 268 to that found in ~/.inputrc, but must be passed as a single argument:\n\ 269 bind '\"\\C-x\\C-r\": re-read-init-file'.\n\ 270 bind accepts the following options:\n\ 271 -m keymap Use `keymap' as the keymap for the duration of this\n\ 272 command. Acceptable keymap names are emacs,\n\ 273 emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move,\n\ 274 vi-command, and vi-insert.\n\ 275 -l List names of functions.\n\ 276 -P List function names and bindings.\n\ 277 -p List functions and bindings in a form that can be\n\ 278 reused as input.\n\ 279 -r keyseq Remove the binding for KEYSEQ.\n\ 280 -x keyseq:shell-command Cause SHELL-COMMAND to be executed when\n\ 281 KEYSEQ is entered.\n\ 282 -f filename Read key bindings from FILENAME.\n\ 283 -q function-name Query about which keys invoke the named function.\n\ 284 -u function-name Unbind all keys which are bound to the named function.\n\ 285 -V List variable names and values\n\ 286 -v List variable names and values in a form that can\n\ 287 be reused as input.\n\ 288 -S List key sequences that invoke macros and their values\n\ 289 -s List key sequences that invoke macros and their values\n\ 290 in a form that can be reused as input."), 291#endif /* HELP_BUILTIN */ 292 (char *)NULL 293}; 294#endif /* READLINE */ 295char * const break_doc[] = { 296#if defined (HELP_BUILTIN) 297N_("Exit from within a FOR, WHILE or UNTIL loop. If N is specified,\n\ 298 break N levels."), 299#endif /* HELP_BUILTIN */ 300 (char *)NULL 301}; 302char * const continue_doc[] = { 303#if defined (HELP_BUILTIN) 304N_("Resume the next iteration of the enclosing FOR, WHILE or UNTIL loop.\n\ 305 If N is specified, resume at the N-th enclosing loop."), 306#endif /* HELP_BUILTIN */ 307 (char *)NULL 308}; 309char * const builtin_doc[] = { 310#if defined (HELP_BUILTIN) 311N_("Run a shell builtin. This is useful when you wish to rename a\n\ 312 shell builtin to be a function, but need the functionality of the\n\ 313 builtin within the function itself."), 314#endif /* HELP_BUILTIN */ 315 (char *)NULL 316}; 317#if defined (DEBUGGER) 318char * const caller_doc[] = { 319#if defined (HELP_BUILTIN) 320N_("Returns the context of the current subroutine call.\n\ 321 \n\ 322 Without EXPR, returns \"$line $filename\". With EXPR,\n\ 323 returns \"$line $subroutine $filename\"; this extra information\n\ 324 can be used to provide a stack trace.\n\ 325 \n\ 326 The value of EXPR indicates how many call frames to go back before the\n\ 327 current one; the top frame is frame 0."), 328#endif /* HELP_BUILTIN */ 329 (char *)NULL 330}; 331#endif /* DEBUGGER */ 332char * const cd_doc[] = { 333#if defined (HELP_BUILTIN) 334N_("Change the current directory to DIR. The variable $HOME is the\n\ 335 default DIR. The variable CDPATH defines the search path for\n\ 336 the directory containing DIR. Alternative directory names in CDPATH\n\ 337 are separated by a colon (:). A null directory name is the same as\n\ 338 the current directory, i.e. `.'. If DIR begins with a slash (/),\n\ 339 then CDPATH is not used. If the directory is not found, and the\n\ 340 shell option `cdable_vars' is set, then try the word as a variable\n\ 341 name. If that variable has a value, then cd to the value of that\n\ 342 variable. The -P option says to use the physical directory structure\n\ 343 instead of following symbolic links; the -L option forces symbolic links\n\ 344 to be followed."), 345#endif /* HELP_BUILTIN */ 346 (char *)NULL 347}; 348char * const pwd_doc[] = { 349#if defined (HELP_BUILTIN) 350N_("Print the current working directory. With the -P option, pwd prints\n\ 351 the physical directory, without any symbolic links; the -L option\n\ 352 makes pwd follow symbolic links."), 353#endif /* HELP_BUILTIN */ 354 (char *)NULL 355}; 356char * const colon_doc[] = { 357#if defined (HELP_BUILTIN) 358N_("No effect; the command does nothing. A zero exit code is returned."), 359#endif /* HELP_BUILTIN */ 360 (char *)NULL 361}; 362char * const true_doc[] = { 363#if defined (HELP_BUILTIN) 364N_("Return a successful result."), 365#endif /* HELP_BUILTIN */ 366 (char *)NULL 367}; 368char * const false_doc[] = { 369#if defined (HELP_BUILTIN) 370N_("Return an unsuccessful result."), 371#endif /* HELP_BUILTIN */ 372 (char *)NULL 373}; 374char * const command_doc[] = { 375#if defined (HELP_BUILTIN) 376N_("Runs COMMAND with ARGS ignoring shell functions. If you have a shell\n\ 377 function called `ls', and you wish to call the command `ls', you can\n\ 378 say \"command ls\". If the -p option is given, a default value is used\n\ 379 for PATH that is guaranteed to find all of the standard utilities. If\n\ 380 the -V or -v option is given, a string is printed describing COMMAND.\n\ 381 The -V option produces a more verbose description."), 382#endif /* HELP_BUILTIN */ 383 (char *)NULL 384}; 385char * const declare_doc[] = { 386#if defined (HELP_BUILTIN) 387N_("Declare variables and/or give them attributes. If no NAMEs are\n\ 388 given, then display the values of variables instead. The -p option\n\ 389 will display the attributes and values of each NAME.\n\ 390 \n\ 391 The flags are:\n\ 392 \n\ 393 -a to make NAMEs arrays (if supported)\n\ 394 -f to select from among function names only\n\ 395 -F to display function names (and line number and source file name if\n\ 396 debugging) without definitions\n\ 397 -i to make NAMEs have the `integer' attribute\n\ 398 -r to make NAMEs readonly\n\ 399 -t to make NAMEs have the `trace' attribute\n\ 400 -x to make NAMEs export\n\ 401 \n\ 402 Variables with the integer attribute have arithmetic evaluation (see\n\ 403 `let') done when the variable is assigned to.\n\ 404 \n\ 405 When displaying values of variables, -f displays a function's name\n\ 406 and definition. The -F option restricts the display to function\n\ 407 name only.\n\ 408 \n\ 409 Using `+' instead of `-' turns off the given attribute instead. When\n\ 410 used in a function, makes NAMEs local, as with the `local' command."), 411#endif /* HELP_BUILTIN */ 412 (char *)NULL 413}; 414char * const typeset_doc[] = { 415#if defined (HELP_BUILTIN) 416N_("Obsolete. See `declare'."), 417#endif /* HELP_BUILTIN */ 418 (char *)NULL 419}; 420char * const local_doc[] = { 421#if defined (HELP_BUILTIN) 422N_("Create a local variable called NAME, and give it VALUE. LOCAL\n\ 423 can only be used within a function; it makes the variable NAME\n\ 424 have a visible scope restricted to that function and its children."), 425#endif /* HELP_BUILTIN */ 426 (char *)NULL 427}; 428#if defined (V9_ECHO) 429char * const echo_doc[] = { 430#if defined (HELP_BUILTIN) 431N_("Output the ARGs. If -n is specified, the trailing newline is\n\ 432 suppressed. If the -e option is given, interpretation of the\n\ 433 following backslash-escaped characters is turned on:\n\ 434 \\a alert (bell)\n\ 435 \\b backspace\n\ 436 \\c suppress trailing newline\n\ 437 \\E escape character\n\ 438 \\f form feed\n\ 439 \\n new line\n\ 440 \\r carriage return\n\ 441 \\t horizontal tab\n\ 442 \\v vertical tab\n\ 443 \\\\ backslash\n\ 444 \\0nnn the character whose ASCII code is NNN (octal). NNN can be\n\ 445 0 to 3 octal digits\n\ 446 \n\ 447 You can explicitly turn off the interpretation of the above characters\n\ 448 with the -E option."), 449#endif /* HELP_BUILTIN */ 450 (char *)NULL 451}; 452#endif /* V9_ECHO */ 453#if !defined (V9_ECHO) 454char * const echo_doc[] = { 455#if defined (HELP_BUILTIN) 456N_("Output the ARGs. If -n is specified, the trailing newline is suppressed."), 457#endif /* HELP_BUILTIN */ 458 (char *)NULL 459}; 460#endif /* !V9_ECHO */ 461char * const enable_doc[] = { 462#if defined (HELP_BUILTIN) 463N_("Enable and disable builtin shell commands. This allows\n\ 464 you to use a disk command which has the same name as a shell\n\ 465 builtin without specifying a full pathname. If -n is used, the\n\ 466 NAMEs become disabled; otherwise NAMEs are enabled. For example,\n\ 467 to use the `test' found in $PATH instead of the shell builtin\n\ 468 version, type `enable -n test'. On systems supporting dynamic\n\ 469 loading, the -f option may be used to load new builtins from the\n\ 470 shared object FILENAME. The -d option will delete a builtin\n\ 471 previously loaded with -f. If no non-option names are given, or\n\ 472 the -p option is supplied, a list of builtins is printed. The\n\ 473 -a option means to print every builtin with an indication of whether\n\ 474 or not it is enabled. The -s option restricts the output to the POSIX.2\n\ 475 `special' builtins. The -n option displays a list of all disabled builtins."), 476#endif /* HELP_BUILTIN */ 477 (char *)NULL 478}; 479char * const eval_doc[] = { 480#if defined (HELP_BUILTIN) 481N_("Read ARGs as input to the shell and execute the resulting command(s)."), 482#endif /* HELP_BUILTIN */ 483 (char *)NULL 484}; 485char * const getopts_doc[] = { 486#if defined (HELP_BUILTIN) 487N_("Getopts is used by shell procedures to parse positional parameters.\n\ 488 \n\ 489 OPTSTRING contains the option letters to be recognized; if a letter\n\ 490 is followed by a colon, the option is expected to have an argument,\n\ 491 which should be separated from it by white space.\n\ 492 \n\ 493 Each time it is invoked, getopts will place the next option in the\n\ 494 shell variable $name, initializing name if it does not exist, and\n\ 495 the index of the next argument to be processed into the shell\n\ 496 variable OPTIND. OPTIND is initialized to 1 each time the shell or\n\ 497 a shell script is invoked. When an option requires an argument,\n\ 498 getopts places that argument into the shell variable OPTARG.\n\ 499 \n\ 500 getopts reports errors in one of two ways. If the first character\n\ 501 of OPTSTRING is a colon, getopts uses silent error reporting. In\n\ 502 this mode, no error messages are printed. If an invalid option is\n\ 503 seen, getopts places the option character found into OPTARG. If a\n\ 504 required argument is not found, getopts places a ':' into NAME and\n\ 505 sets OPTARG to the option character found. If getopts is not in\n\ 506 silent mode, and an invalid option is seen, getopts places '?' into\n\ 507 NAME and unsets OPTARG. If a required argument is not found, a '?'\n\ 508 is placed in NAME, OPTARG is unset, and a diagnostic message is\n\ 509 printed.\n\ 510 \n\ 511 If the shell variable OPTERR has the value 0, getopts disables the\n\ 512 printing of error messages, even if the first character of\n\ 513 OPTSTRING is not a colon. OPTERR has the value 1 by default.\n\ 514 \n\ 515 Getopts normally parses the positional parameters ($0 - $9), but if\n\ 516 more arguments are given, they are parsed instead."), 517#endif /* HELP_BUILTIN */ 518 (char *)NULL 519}; 520char * const exec_doc[] = { 521#if defined (HELP_BUILTIN) 522N_("Exec FILE, replacing this shell with the specified program.\n\ 523 If FILE is not specified, the redirections take effect in this\n\ 524 shell. If the first argument is `-l', then place a dash in the\n\ 525 zeroth arg passed to FILE, as login does. If the `-c' option\n\ 526 is supplied, FILE is executed with a null environment. The `-a'\n\ 527 option means to make set argv[0] of the executed process to NAME.\n\ 528 If the file cannot be executed and the shell is not interactive,\n\ 529 then the shell exits, unless the shell option `execfail' is set."), 530#endif /* HELP_BUILTIN */ 531 (char *)NULL 532}; 533char * const exit_doc[] = { 534#if defined (HELP_BUILTIN) 535N_("Exit the shell with a status of N. If N is omitted, the exit status\n\ 536 is that of the last command executed."), 537#endif /* HELP_BUILTIN */ 538 (char *)NULL 539}; 540char * const logout_doc[] = { 541#if defined (HELP_BUILTIN) 542N_("Logout of a login shell."), 543#endif /* HELP_BUILTIN */ 544 (char *)NULL 545}; 546#if defined (HISTORY) 547char * const fc_doc[] = { 548#if defined (HELP_BUILTIN) 549N_("fc is used to list or edit and re-execute commands from the history list.\n\ 550 FIRST and LAST can be numbers specifying the range, or FIRST can be a\n\ 551 string, which means the most recent command beginning with that\n\ 552 string.\n\ 553 \n\ 554 -e ENAME selects which editor to use. Default is FCEDIT, then EDITOR,\n\ 555 then vi.\n\ 556 \n\ 557 -l means list lines instead of editing.\n\ 558 -n means no line numbers listed.\n\ 559 -r means reverse the order of the lines (making it newest listed first).\n\ 560 \n\ 561 With the `fc -s [pat=rep ...] [command]' format, the command is\n\ 562 re-executed after the substitution OLD=NEW is performed.\n\ 563 \n\ 564 A useful alias to use with this is r='fc -s', so that typing `r cc'\n\ 565 runs the last command beginning with `cc' and typing `r' re-executes\n\ 566 the last command."), 567#endif /* HELP_BUILTIN */ 568 (char *)NULL 569}; 570#endif /* HISTORY */ 571#if defined (JOB_CONTROL) 572char * const fg_doc[] = { 573#if defined (HELP_BUILTIN) 574N_("Place JOB_SPEC in the foreground, and make it the current job. If\n\ 575 JOB_SPEC is not present, the shell's notion of the current job is\n\ 576 used."), 577#endif /* HELP_BUILTIN */ 578 (char *)NULL 579}; 580#endif /* JOB_CONTROL */ 581#if defined (JOB_CONTROL) 582char * const bg_doc[] = { 583#if defined (HELP_BUILTIN) 584N_("Place each JOB_SPEC in the background, as if it had been started with\n\ 585 `&'. If JOB_SPEC is not present, the shell's notion of the current\n\ 586 job is used."), 587#endif /* HELP_BUILTIN */ 588 (char *)NULL 589}; 590#endif /* JOB_CONTROL */ 591char * const hash_doc[] = { 592#if defined (HELP_BUILTIN) 593N_("For each NAME, the full pathname of the command is determined and\n\ 594 remembered. If the -p option is supplied, PATHNAME is used as the\n\ 595 full pathname of NAME, and no path search is performed. The -r\n\ 596 option causes the shell to forget all remembered locations. The -d\n\ 597 option causes the shell to forget the remembered location of each NAME.\n\ 598 If the -t option is supplied the full pathname to which each NAME\n\ 599 corresponds is printed. If multiple NAME arguments are supplied with\n\ 600 -t, the NAME is printed before the hashed full pathname. The -l option\n\ 601 causes output to be displayed in a format that may be reused as input.\n\ 602 If no arguments are given, information about remembered commands is displayed."), 603#endif /* HELP_BUILTIN */ 604 (char *)NULL 605}; 606#if defined (HELP_BUILTIN) 607char * const help_doc[] = { 608#if defined (HELP_BUILTIN) 609N_("Display helpful information about builtin commands. If PATTERN is\n\ 610 specified, gives detailed help on all commands matching PATTERN,\n\ 611 otherwise a list of the builtins is printed. The -s option\n\ 612 restricts the output for each builtin command matching PATTERN to\n\ 613 a short usage synopsis."), 614#endif /* HELP_BUILTIN */ 615 (char *)NULL 616}; 617#endif /* HELP_BUILTIN */ 618#if defined (HISTORY) 619char * const history_doc[] = { 620#if defined (HELP_BUILTIN) 621N_("Display the history list with line numbers. Lines listed with\n\ 622 with a `*' have been modified. Argument of N says to list only\n\ 623 the last N lines. The `-c' option causes the history list to be\n\ 624 cleared by deleting all of the entries. The `-d' option deletes\n\ 625 the history entry at offset OFFSET. The `-w' option writes out the\n\ 626 current history to the history file; `-r' means to read the file and\n\ 627 append the contents to the history list instead. `-a' means\n\ 628 to append history lines from this session to the history file.\n\ 629 Argument `-n' means to read all history lines not already read\n\ 630 from the history file and append them to the history list.\n\ 631 \n\ 632 If FILENAME is given, then that is used as the history file else\n\ 633 if $HISTFILE has a value, that is used, else ~/.bash_history.\n\ 634 If the -s option is supplied, the non-option ARGs are appended to\n\ 635 the history list as a single entry. The -p option means to perform\n\ 636 history expansion on each ARG and display the result, without storing\n\ 637 anything in the history list.\n\ 638 \n\ 639 If the $HISTTIMEFORMAT variable is set and not null, its value is used\n\ 640 as a format string for strftime(3) to print the time stamp associated\n\ 641 with each displayed history entry. No time stamps are printed otherwise."), 642#endif /* HELP_BUILTIN */ 643 (char *)NULL 644}; 645#endif /* HISTORY */ 646#if defined (JOB_CONTROL) 647char * const jobs_doc[] = { 648#if defined (HELP_BUILTIN) 649N_("Lists the active jobs. The -l option lists process id's in addition\n\ 650 to the normal information; the -p option lists process id's only.\n\ 651 If -n is given, only processes that have changed status since the last\n\ 652 notification are printed. JOBSPEC restricts output to that job. The\n\ 653 -r and -s options restrict output to running and stopped jobs only,\n\ 654 respectively. Without options, the status of all active jobs is\n\ 655 printed. If -x is given, COMMAND is run after all job specifications\n\ 656 that appear in ARGS have been replaced with the process ID of that job's\n\ 657 process group leader."), 658#endif /* HELP_BUILTIN */ 659 (char *)NULL 660}; 661#endif /* JOB_CONTROL */ 662#if defined (JOB_CONTROL) 663char * const disown_doc[] = { 664#if defined (HELP_BUILTIN) 665N_("By default, removes each JOBSPEC argument from the table of active jobs.\n\ 666 If the -h option is given, the job is not removed from the table, but is\n\ 667 marked so that SIGHUP is not sent to the job if the shell receives a\n\ 668 SIGHUP. The -a option, when JOBSPEC is not supplied, means to remove all\n\ 669 jobs from the job table; the -r option means to remove only running jobs."), 670#endif /* HELP_BUILTIN */ 671 (char *)NULL 672}; 673#endif /* JOB_CONTROL */ 674char * const kill_doc[] = { 675#if defined (HELP_BUILTIN) 676N_("Send the processes named by PID (or JOBSPEC) the signal SIGSPEC. If\n\ 677 SIGSPEC is not present, then SIGTERM is assumed. An argument of `-l'\n\ 678 lists the signal names; if arguments follow `-l' they are assumed to\n\ 679 be signal numbers for which names should be listed. Kill is a shell\n\ 680 builtin for two reasons: it allows job IDs to be used instead of\n\ 681 process IDs, and, if you have reached the limit on processes that\n\ 682 you can create, you don't have to start a process to kill another one."), 683#endif /* HELP_BUILTIN */ 684 (char *)NULL 685}; 686char * const let_doc[] = { 687#if defined (HELP_BUILTIN) 688N_("Each ARG is an arithmetic expression to be evaluated. Evaluation\n\ 689 is done in fixed-width integers with no check for overflow, though\n\ 690 division by 0 is trapped and flagged as an error. The following\n\ 691 list of operators is grouped into levels of equal-precedence operators.\n\ 692 The levels are listed in order of decreasing precedence.\n\ 693 \n\ 694 id++, id-- variable post-increment, post-decrement\n\ 695 ++id, --id variable pre-increment, pre-decrement\n\ 696 -, + unary minus, plus\n\ 697 !, ~ logical and bitwise negation\n\ 698 ** exponentiation\n\ 699 *, /, % multiplication, division, remainder\n\ 700 +, - addition, subtraction\n\ 701 <<, >> left and right bitwise shifts\n\ 702 <=, >=, <, > comparison\n\ 703 ==, != equality, inequality\n\ 704 & bitwise AND\n\ 705 ^ bitwise XOR\n\ 706 | bitwise OR\n\ 707 && logical AND\n\ 708 || logical OR\n\ 709 expr ? expr : expr\n\ 710 conditional operator\n\ 711 =, *=, /=, %=,\n\ 712 +=, -=, <<=, >>=,\n\ 713 &=, ^=, |= assignment\n\ 714 \n\ 715 Shell variables are allowed as operands. The name of the variable\n\ 716 is replaced by its value (coerced to a fixed-width integer) within\n\ 717 an expression. The variable need not have its integer attribute\n\ 718 turned on to be used in an expression.\n\ 719 \n\ 720 Operators are evaluated in order of precedence. Sub-expressions in\n\ 721 parentheses are evaluated first and may override the precedence\n\ 722 rules above.\n\ 723 \n\ 724 If the last ARG evaluates to 0, let returns 1; 0 is returned\n\ 725 otherwise."), 726#endif /* HELP_BUILTIN */ 727 (char *)NULL 728}; 729char * const read_doc[] = { 730#if defined (HELP_BUILTIN) 731N_("One line is read from the standard input, or from file descriptor FD if the\n\ 732 -u option is supplied, and the first word is assigned to the first NAME,\n\ 733 the second word to the second NAME, and so on, with leftover words assigned\n\ 734 to the last NAME. Only the characters found in $IFS are recognized as word\n\ 735 delimiters. If no NAMEs are supplied, the line read is stored in the REPLY\n\ 736 variable. If the -r option is given, this signifies `raw' input, and\n\ 737 backslash escaping is disabled. The -d option causes read to continue\n\ 738 until the first character of DELIM is read, rather than newline. If the -p\n\ 739 option is supplied, the string PROMPT is output without a trailing newline\n\ 740 before attempting to read. If -a is supplied, the words read are assigned\n\ 741 to sequential indices of ARRAY, starting at zero. If -e is supplied and\n\ 742 the shell is interactive, readline is used to obtain the line. If -n is\n\ 743 supplied with a non-zero NCHARS argument, read returns after NCHARS\n\ 744 characters have been read. The -s option causes input coming from a\n\ 745 terminal to not be echoed.\n\ 746 \n\ 747 The -t option causes read to time out and return failure if a complete line\n\ 748 of input is not read within TIMEOUT seconds. If the TMOUT variable is set,\n\ 749 its value is the default timeout. The return code is zero, unless end-of-file\n\ 750 is encountered, read times out, or an invalid file descriptor is supplied as\n\ 751 the argument to -u."), 752#endif /* HELP_BUILTIN */ 753 (char *)NULL 754}; 755char * const return_doc[] = { 756#if defined (HELP_BUILTIN) 757N_("Causes a function to exit with the return value specified by N. If N\n\ 758 is omitted, the return status is that of the last command."), 759#endif /* HELP_BUILTIN */ 760 (char *)NULL 761}; 762char * const set_doc[] = { 763#if defined (HELP_BUILTIN) 764N_(" -a Mark variables which are modified or created for export.\n\ 765 -b Notify of job termination immediately.\n\ 766 -e Exit immediately if a command exits with a non-zero status.\n\ 767 -f Disable file name generation (globbing).\n\ 768 -h Remember the location of commands as they are looked up.\n\ 769 -k All assignment arguments are placed in the environment for a\n\ 770 command, not just those that precede the command name.\n\ 771 -m Job control is enabled.\n\ 772 -n Read commands but do not execute them.\n\ 773 -o option-name\n\ 774 Set the variable corresponding to option-name:\n\ 775 allexport same as -a\n\ 776 braceexpand same as -B\n\ 777 emacs use an emacs-style line editing interface\n\ 778 errexit same as -e\n\ 779 errtrace same as -E\n\ 780 functrace same as -T\n\ 781 hashall same as -h\n\ 782 histexpand same as -H\n\ 783 history enable command history\n\ 784 ignoreeof the shell will not exit upon reading EOF\n\ 785 interactive-comments\n\ 786 allow comments to appear in interactive commands\n\ 787 keyword same as -k\n\ 788 monitor same as -m\n\ 789 noclobber same as -C\n\ 790 noexec same as -n\n\ 791 noglob same as -f\n\ 792 nolog currently accepted but ignored\n\ 793 notify same as -b\n\ 794 nounset same as -u\n\ 795 onecmd same as -t\n\ 796 physical same as -P\n\ 797 pipefail the return value of a pipeline is the status of\n\ 798 the last command to exit with a non-zero status,\n\ 799 or zero if no command exited with a non-zero status\n\ 800 posix change the behavior of bash where the default\n\ 801 operation differs from the 1003.2 standard to\n\ 802 match the standard\n\ 803 privileged same as -p\n\ 804 verbose same as -v\n\ 805 vi use a vi-style line editing interface\n\ 806 xtrace same as -x\n\ 807 -p Turned on whenever the real and effective user ids do not match.\n\ 808 Disables processing of the $ENV file and importing of shell\n\ 809 functions. Turning this option off causes the effective uid and\n\ 810 gid to be set to the real uid and gid.\n\ 811 -t Exit after reading and executing one command.\n\ 812 -u Treat unset variables as an error when substituting.\n\ 813 -v Print shell input lines as they are read.\n\ 814 -x Print commands and their arguments as they are executed.\n\ 815 -B the shell will perform brace expansion\n\ 816 -C If set, disallow existing regular files to be overwritten\n\ 817 by redirection of output.\n\ 818 -E If set, the ERR trap is inherited by shell functions.\n\ 819 -H Enable ! style history substitution. This flag is on\n\ 820 by default when the shell is interactive.\n\ 821 -P If set, do not follow symbolic links when executing commands\n\ 822 such as cd which change the current directory.\n\ 823 -T If set, the DEBUG trap is inherited by shell functions.\n\ 824 - Assign any remaining arguments to the positional parameters.\n\ 825 The -x and -v options are turned off.\n\ 826 \n\ 827 Using + rather than - causes these flags to be turned off. The\n\ 828 flags can also be used upon invocation of the shell. The current\n\ 829 set of flags may be found in $-. The remaining n ARGs are positional\n\ 830 parameters and are assigned, in order, to $1, $2, .. $n. If no\n\ 831 ARGs are given, all shell variables are printed."), 832#endif /* HELP_BUILTIN */ 833 (char *)NULL 834}; 835char * const unset_doc[] = { 836#if defined (HELP_BUILTIN) 837N_("For each NAME, remove the corresponding variable or function. Given\n\ 838 the `-v', unset will only act on variables. Given the `-f' flag,\n\ 839 unset will only act on functions. With neither flag, unset first\n\ 840 tries to unset a variable, and if that fails, then tries to unset a\n\ 841 function. Some variables cannot be unset; also see readonly."), 842#endif /* HELP_BUILTIN */ 843 (char *)NULL 844}; 845char * const export_doc[] = { 846#if defined (HELP_BUILTIN) 847N_("NAMEs are marked for automatic export to the environment of\n\ 848 subsequently executed commands. If the -f option is given,\n\ 849 the NAMEs refer to functions. If no NAMEs are given, or if `-p'\n\ 850 is given, a list of all names that are exported in this shell is\n\ 851 printed. An argument of `-n' says to remove the export property\n\ 852 from subsequent NAMEs. An argument of `--' disables further option\n\ 853 processing."), 854#endif /* HELP_BUILTIN */ 855 (char *)NULL 856}; 857char * const readonly_doc[] = { 858#if defined (HELP_BUILTIN) 859N_("The given NAMEs are marked readonly and the values of these NAMEs may\n\ 860 not be changed by subsequent assignment. If the -f option is given,\n\ 861 then functions corresponding to the NAMEs are so marked. If no\n\ 862 arguments are given, or if `-p' is given, a list of all readonly names\n\ 863 is printed. The `-a' option means to treat each NAME as\n\ 864 an array variable. An argument of `--' disables further option\n\ 865 processing."), 866#endif /* HELP_BUILTIN */ 867 (char *)NULL 868}; 869char * const shift_doc[] = { 870#if defined (HELP_BUILTIN) 871N_("The positional parameters from $N+1 ... are renamed to $1 ... If N is\n\ 872 not given, it is assumed to be 1."), 873#endif /* HELP_BUILTIN */ 874 (char *)NULL 875}; 876char * const source_doc[] = { 877#if defined (HELP_BUILTIN) 878N_("Read and execute commands from FILENAME and return. The pathnames\n\ 879 in $PATH are used to find the directory containing FILENAME. If any\n\ 880 ARGUMENTS are supplied, they become the positional parameters when\n\ 881 FILENAME is executed."), 882#endif /* HELP_BUILTIN */ 883 (char *)NULL 884}; 885char * const dot_doc[] = { 886#if defined (HELP_BUILTIN) 887N_("Read and execute commands from FILENAME and return. The pathnames\n\ 888 in $PATH are used to find the directory containing FILENAME. If any\n\ 889 ARGUMENTS are supplied, they become the positional parameters when\n\ 890 FILENAME is executed."), 891#endif /* HELP_BUILTIN */ 892 (char *)NULL 893}; 894#if defined (JOB_CONTROL) 895char * const suspend_doc[] = { 896#if defined (HELP_BUILTIN) 897N_("Suspend the execution of this shell until it receives a SIGCONT\n\ 898 signal. The `-f' if specified says not to complain about this\n\ 899 being a login shell if it is; just suspend anyway."), 900#endif /* HELP_BUILTIN */ 901 (char *)NULL 902}; 903#endif /* JOB_CONTROL */ 904char * const test_doc[] = { 905#if defined (HELP_BUILTIN) 906N_("Exits with a status of 0 (true) or 1 (false) depending on\n\ 907 the evaluation of EXPR. Expressions may be unary or binary. Unary\n\ 908 expressions are often used to examine the status of a file. There\n\ 909 are string operators as well, and numeric comparison operators.\n\ 910 \n\ 911 File operators:\n\ 912 \n\ 913 -a FILE True if file exists.\n\ 914 -b FILE True if file is block special.\n\ 915 -c FILE True if file is character special.\n\ 916 -d FILE True if file is a directory.\n\ 917 -e FILE True if file exists.\n\ 918 -f FILE True if file exists and is a regular file.\n\ 919 -g FILE True if file is set-group-id.\n\ 920 -h FILE True if file is a symbolic link.\n\ 921 -L FILE True if file is a symbolic link.\n\ 922 -k FILE True if file has its `sticky' bit set.\n\ 923 -p FILE True if file is a named pipe.\n\ 924 -r FILE True if file is readable by you.\n\ 925 -s FILE True if file exists and is not empty.\n\ 926 -S FILE True if file is a socket.\n\ 927 -t FD True if FD is opened on a terminal.\n\ 928 -u FILE True if the file is set-user-id.\n\ 929 -w FILE True if the file is writable by you.\n\ 930 -x FILE True if the file is executable by you.\n\ 931 -O FILE True if the file is effectively owned by you.\n\ 932 -G FILE True if the file is effectively owned by your group.\n\ 933 -N FILE True if the file has been modified since it was last read.\n\ 934 \n\ 935 FILE1 -nt FILE2 True if file1 is newer than file2 (according to\n\ 936 modification date).\n\ 937 \n\ 938 FILE1 -ot FILE2 True if file1 is older than file2.\n\ 939 \n\ 940 FILE1 -ef FILE2 True if file1 is a hard link to file2.\n\ 941 \n\ 942 String operators:\n\ 943 \n\ 944 -z STRING True if string is empty.\n\ 945 \n\ 946 -n STRING\n\ 947 STRING True if string is not empty.\n\ 948 \n\ 949 STRING1 = STRING2\n\ 950 True if the strings are equal.\n\ 951 STRING1 != STRING2\n\ 952 True if the strings are not equal.\n\ 953 STRING1 < STRING2\n\ 954 True if STRING1 sorts before STRING2 lexicographically.\n\ 955 STRING1 > STRING2\n\ 956 True if STRING1 sorts after STRING2 lexicographically.\n\ 957 \n\ 958 Other operators:\n\ 959 \n\ 960 -o OPTION True if the shell option OPTION is enabled.\n\ 961 ! EXPR True if expr is false.\n\ 962 EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n\ 963 EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n\ 964 \n\ 965 arg1 OP arg2 Arithmetic tests. OP is one of -eq, -ne,\n\ 966 -lt, -le, -gt, or -ge.\n\ 967 \n\ 968 Arithmetic binary operators return true if ARG1 is equal, not-equal,\n\ 969 less-than, less-than-or-equal, greater-than, or greater-than-or-equal\n\ 970 than ARG2."), 971#endif /* HELP_BUILTIN */ 972 (char *)NULL 973}; 974char * const test_bracket_doc[] = { 975#if defined (HELP_BUILTIN) 976N_("This is a synonym for the \"test\" builtin, but the last\n\ 977 argument must be a literal `]', to match the opening `['."), 978#endif /* HELP_BUILTIN */ 979 (char *)NULL 980}; 981char * const times_doc[] = { 982#if defined (HELP_BUILTIN) 983N_("Print the accumulated user and system times for processes run from\n\ 984 the shell."), 985#endif /* HELP_BUILTIN */ 986 (char *)NULL 987}; 988char * const trap_doc[] = { 989#if defined (HELP_BUILTIN) 990N_("The command ARG is to be read and executed when the shell receives\n\ 991 signal(s) SIGNAL_SPEC. If ARG is absent (and a single SIGNAL_SPEC\n\ 992 is supplied) or `-', each specified signal is reset to its original\n\ 993 value. If ARG is the null string each SIGNAL_SPEC is ignored by the\n\ 994 shell and by the commands it invokes. If a SIGNAL_SPEC is EXIT (0)\n\ 995 the command ARG is executed on exit from the shell. If a SIGNAL_SPEC\n\ 996 is DEBUG, ARG is executed after every simple command. If the`-p' option\n\ 997 is supplied then the trap commands associated with each SIGNAL_SPEC are\n\ 998 displayed. If no arguments are supplied or if only `-p' is given, trap\n\ 999 prints the list of commands associated with each signal. Each SIGNAL_SPEC\n\ 1000 is either a signal name in <signal.h> or a signal number. Signal names\n\ 1001 are case insensitive and the SIG prefix is optional. `trap -l' prints\n\ 1002 a list of signal names and their corresponding numbers. Note that a\n\ 1003 signal can be sent to the shell with \"kill -signal $$\"."), 1004#endif /* HELP_BUILTIN */ 1005 (char *)NULL 1006}; 1007char * const type_doc[] = { 1008#if defined (HELP_BUILTIN) 1009N_("For each NAME, indicate how it would be interpreted if used as a\n\ 1010 command name.\n\ 1011 \n\ 1012 If the -t option is used, `type' outputs a single word which is one of\n\ 1013 `alias', `keyword', `function', `builtin', `file' or `', if NAME is an\n\ 1014 alias, shell reserved word, shell function, shell builtin, disk file,\n\ 1015 or unfound, respectively.\n\ 1016 \n\ 1017 If the -p flag is used, `type' either returns the name of the disk\n\ 1018 file that would be executed, or nothing if `type -t NAME' would not\n\ 1019 return `file'.\n\ 1020 \n\ 1021 If the -a flag is used, `type' displays all of the places that contain\n\ 1022 an executable named `file'. This includes aliases, builtins, and\n\ 1023 functions, if and only if the -p flag is not also used.\n\ 1024 \n\ 1025 The -f flag suppresses shell function lookup.\n\ 1026 \n\ 1027 The -P flag forces a PATH search for each NAME, even if it is an alias,\n\ 1028 builtin, or function, and returns the name of the disk file that would\n\ 1029 be executed."), 1030#endif /* HELP_BUILTIN */ 1031 (char *)NULL 1032}; 1033#if !defined (_MINIX) 1034char * const ulimit_doc[] = { 1035#if defined (HELP_BUILTIN) 1036N_("Ulimit provides control over the resources available to processes\n\ 1037 started by the shell, on systems that allow such control. If an\n\ 1038 option is given, it is interpreted as follows:\n\ 1039 \n\ 1040 -S use the `soft' resource limit\n\ 1041 -H use the `hard' resource limit\n\ 1042 -a all current limits are reported\n\ 1043 -c the maximum size of core files created\n\ 1044 -d the maximum size of a process's data segment\n\ 1045 -e the maximum scheduling priority (`nice')\n\ 1046 -f the maximum size of files written by the shell and its children\n\ 1047 -i the maximum number of pending signals\n\ 1048 -l the maximum size a process may lock into memory\n\ 1049 -m the maximum resident set size\n\ 1050 -n the maximum number of open file descriptors\n\ 1051 -p the pipe buffer size\n\ 1052 -q the maximum number of bytes in POSIX message queues\n\ 1053 -r the maximum real-time scheduling priority\n\ 1054 -s the maximum stack size\n\ 1055 -t the maximum amount of cpu time in seconds\n\ 1056 -u the maximum number of user processes\n\ 1057 -v the size of virtual memory\n\ 1058 -x the maximum number of file locks\n\ 1059 \n\ 1060 If LIMIT is given, it is the new value of the specified resource;\n\ 1061 the special LIMIT values `soft', `hard', and `unlimited' stand for\n\ 1062 the current soft limit, the current hard limit, and no limit, respectively.\n\ 1063 Otherwise, the current value of the specified resource is printed.\n\ 1064 If no option is given, then -f is assumed. Values are in 1024-byte\n\ 1065 increments, except for -t, which is in seconds, -p, which is in\n\ 1066 increments of 512 bytes, and -u, which is an unscaled number of\n\ 1067 processes."), 1068#endif /* HELP_BUILTIN */ 1069 (char *)NULL 1070}; 1071#endif /* !_MINIX */ 1072char * const umask_doc[] = { 1073#if defined (HELP_BUILTIN) 1074N_("The user file-creation mask is set to MODE. If MODE is omitted, or if\n\ 1075 `-S' is supplied, the current value of the mask is printed. The `-S'\n\ 1076 option makes the output symbolic; otherwise an octal number is output.\n\ 1077 If `-p' is supplied, and MODE is omitted, the output is in a form\n\ 1078 that may be used as input. If MODE begins with a digit, it is\n\ 1079 interpreted as an octal number, otherwise it is a symbolic mode string\n\ 1080 like that accepted by chmod(1)."), 1081#endif /* HELP_BUILTIN */ 1082 (char *)NULL 1083}; 1084#if defined (JOB_CONTROL) 1085char * const wait_doc[] = { 1086#if defined (HELP_BUILTIN) 1087N_("Wait for the specified process and report its termination status. If\n\ 1088 N is not given, all currently active child processes are waited for,\n\ 1089 and the return code is zero. N may be a process ID or a job\n\ 1090 specification; if a job spec is given, all processes in the job's\n\ 1091 pipeline are waited for."), 1092#endif /* HELP_BUILTIN */ 1093 (char *)NULL 1094}; 1095#endif /* JOB_CONTROL */ 1096#if !defined (JOB_CONTROL) 1097char * const wait_doc[] = { 1098#if defined (HELP_BUILTIN) 1099N_("Wait for the specified process and report its termination status. If\n\ 1100 N is not given, all currently active child processes are waited for,\n\ 1101 and the return code is zero. N is a process ID; if it is not given,\n\ 1102 all child processes of the shell are waited for."), 1103#endif /* HELP_BUILTIN */ 1104 (char *)NULL 1105}; 1106#endif /* !JOB_CONTROL */ 1107char * const for_doc[] = { 1108#if defined (HELP_BUILTIN) 1109N_("The `for' loop executes a sequence of commands for each member in a\n\ 1110 list of items. If `in WORDS ...;' is not present, then `in \"$@\"' is\n\ 1111 assumed. For each element in WORDS, NAME is set to that element, and\n\ 1112 the COMMANDS are executed."), 1113#endif /* HELP_BUILTIN */ 1114 (char *)NULL 1115}; 1116char * const arith_for_doc[] = { 1117#if defined (HELP_BUILTIN) 1118N_("Equivalent to\n\ 1119 (( EXP1 ))\n\ 1120 while (( EXP2 )); do\n\ 1121 COMMANDS\n\ 1122 (( EXP3 ))\n\ 1123 done\n\ 1124 EXP1, EXP2, and EXP3 are arithmetic expressions. If any expression is\n\ 1125 omitted, it behaves as if it evaluates to 1."), 1126#endif /* HELP_BUILTIN */ 1127 (char *)NULL 1128}; 1129char * const select_doc[] = { 1130#if defined (HELP_BUILTIN) 1131N_("The WORDS are expanded, generating a list of words. The\n\ 1132 set of expanded words is printed on the standard error, each\n\ 1133 preceded by a number. If `in WORDS' is not present, `in \"$@\"'\n\ 1134 is assumed. The PS3 prompt is then displayed and a line read\n\ 1135 from the standard input. If the line consists of the number\n\ 1136 corresponding to one of the displayed words, then NAME is set\n\ 1137 to that word. If the line is empty, WORDS and the prompt are\n\ 1138 redisplayed. If EOF is read, the command completes. Any other\n\ 1139 value read causes NAME to be set to null. The line read is saved\n\ 1140 in the variable REPLY. COMMANDS are executed after each selection\n\ 1141 until a break command is executed."), 1142#endif /* HELP_BUILTIN */ 1143 (char *)NULL 1144}; 1145char * const time_doc[] = { 1146#if defined (HELP_BUILTIN) 1147N_("Execute PIPELINE and print a summary of the real time, user CPU time,\n\ 1148 and system CPU time spent executing PIPELINE when it terminates.\n\ 1149 The return status is the return status of PIPELINE. The `-p' option\n\ 1150 prints the timing summary in a slightly different format. This uses\n\ 1151 the value of the TIMEFORMAT variable as the output format."), 1152#endif /* HELP_BUILTIN */ 1153 (char *)NULL 1154}; 1155char * const case_doc[] = { 1156#if defined (HELP_BUILTIN) 1157N_("Selectively execute COMMANDS based upon WORD matching PATTERN. The\n\ 1158 `|' is used to separate multiple patterns."), 1159#endif /* HELP_BUILTIN */ 1160 (char *)NULL 1161}; 1162char * const if_doc[] = { 1163#if defined (HELP_BUILTIN) 1164N_("The `if COMMANDS' list is executed. If its exit status is zero, then the\n\ 1165 `then COMMANDS' list is executed. Otherwise, each `elif COMMANDS' list is\n\ 1166 executed in turn, and if its exit status is zero, the corresponding\n\ 1167 `then COMMANDS' list is executed and the if command completes. Otherwise,\n\ 1168 the `else COMMANDS' list is executed, if present. The exit status of the\n\ 1169 entire construct is the exit status of the last command executed, or zero\n\ 1170 if no condition tested true."), 1171#endif /* HELP_BUILTIN */ 1172 (char *)NULL 1173}; 1174char * const while_doc[] = { 1175#if defined (HELP_BUILTIN) 1176N_("Expand and execute COMMANDS as long as the final command in the\n\ 1177 `while' COMMANDS has an exit status of zero."), 1178#endif /* HELP_BUILTIN */ 1179 (char *)NULL 1180}; 1181char * const until_doc[] = { 1182#if defined (HELP_BUILTIN) 1183N_("Expand and execute COMMANDS as long as the final command in the\n\ 1184 `until' COMMANDS has an exit status which is not zero."), 1185#endif /* HELP_BUILTIN */ 1186 (char *)NULL 1187}; 1188char * const function_doc[] = { 1189#if defined (HELP_BUILTIN) 1190N_("Create a simple command invoked by NAME which runs COMMANDS.\n\ 1191 Arguments on the command line along with NAME are passed to the\n\ 1192 function as $0 .. $n."), 1193#endif /* HELP_BUILTIN */ 1194 (char *)NULL 1195}; 1196char * const grouping_braces_doc[] = { 1197#if defined (HELP_BUILTIN) 1198N_("Run a set of commands in a group. This is one way to redirect an\n\ 1199 entire set of commands."), 1200#endif /* HELP_BUILTIN */ 1201 (char *)NULL 1202}; 1203char * const fg_percent_doc[] = { 1204#if defined (HELP_BUILTIN) 1205N_("Equivalent to the JOB_SPEC argument to the `fg' command. Resume a\n\ 1206 stopped or background job. JOB_SPEC can specify either a job name\n\ 1207 or a job number. Following JOB_SPEC with a `&' places the job in\n\ 1208 the background, as if the job specification had been supplied as an\n\ 1209 argument to `bg'."), 1210#endif /* HELP_BUILTIN */ 1211 (char *)NULL 1212}; 1213char * const arith_doc[] = { 1214#if defined (HELP_BUILTIN) 1215N_("The EXPRESSION is evaluated according to the rules for arithmetic\n\ 1216 evaluation. Equivalent to \"let EXPRESSION\"."), 1217#endif /* HELP_BUILTIN */ 1218 (char *)NULL 1219}; 1220char * const conditional_doc[] = { 1221#if defined (HELP_BUILTIN) 1222N_("Returns a status of 0 or 1 depending on the evaluation of the conditional\n\ 1223 expression EXPRESSION. Expressions are composed of the same primaries used\n\ 1224 by the `test' builtin, and may be combined using the following operators\n\ 1225 \n\ 1226 ( EXPRESSION ) Returns the value of EXPRESSION\n\ 1227 ! EXPRESSION True if EXPRESSION is false; else false\n\ 1228 EXPR1 && EXPR2 True if both EXPR1 and EXPR2 are true; else false\n\ 1229 EXPR1 || EXPR2 True if either EXPR1 or EXPR2 is true; else false\n\ 1230 \n\ 1231 When the `==' and `!=' operators are used, the string to the right of the\n\ 1232 operator is used as a pattern and pattern matching is performed. The\n\ 1233 && and || operators do not evaluate EXPR2 if EXPR1 is sufficient to\n\ 1234 determine the expression's value."), 1235#endif /* HELP_BUILTIN */ 1236 (char *)NULL 1237}; 1238char * const variable_help_doc[] = { 1239#if defined (HELP_BUILTIN) 1240N_("BASH_VERSION Version information for this Bash.\n\ 1241 CDPATH A colon-separated list of directories to search\n\ 1242 for directries given as arguments to `cd'.\n\ 1243 GLOBIGNORE A colon-separated list of patterns describing filenames to\n\ 1244 be ignored by pathname expansion.\n\ 1245 HISTFILE The name of the file where your command history is stored.\n\ 1246 HISTFILESIZE The maximum number of lines this file can contain.\n\ 1247 HISTSIZE The maximum number of history lines that a running\n\ 1248 shell can access.\n\ 1249 HOME The complete pathname to your login directory.\n\ 1250 HOSTNAME The name of the current host.\n\ 1251 HOSTTYPE The type of CPU this version of Bash is running under.\n\ 1252 IGNOREEOF Controls the action of the shell on receipt of an EOF\n\ 1253 character as the sole input. If set, then the value\n\ 1254 of it is the number of EOF characters that can be seen\n\ 1255 in a row on an empty line before the shell will exit\n\ 1256 (default 10). When unset, EOF signifies the end of input.\n\ 1257 MACHTYPE A string describing the current system Bash is running on.\n\ 1258 MAILCHECK How often, in seconds, Bash checks for new mail.\n\ 1259 MAILPATH A colon-separated list of filenames which Bash checks\n\ 1260 for new mail.\n\ 1261 OSTYPE The version of Unix this version of Bash is running on.\n\ 1262 PATH A colon-separated list of directories to search when\n\ 1263 looking for commands.\n\ 1264 PROMPT_COMMAND A command to be executed before the printing of each\n\ 1265 primary prompt.\n\ 1266 PS1 The primary prompt string.\n\ 1267 PS2 The secondary prompt string.\n\ 1268 PWD The full pathname of the current directory.\n\ 1269 SHELLOPTS A colon-separated list of enabled shell options.\n\ 1270 TERM The name of the current terminal type.\n\ 1271 TIMEFORMAT The output format for timing statistics displayed by the\n\ 1272 `time' reserved word.\n\ 1273 auto_resume Non-null means a command word appearing on a line by\n\ 1274 itself is first looked for in the list of currently\n\ 1275 stopped jobs. If found there, that job is foregrounded.\n\ 1276 A value of `exact' means that the command word must\n\ 1277 exactly match a command in the list of stopped jobs. A\n\ 1278 value of `substring' means that the command word must\n\ 1279 match a substring of the job. Any other value means that\n\ 1280 the command must be a prefix of a stopped job.\n\ 1281 histchars Characters controlling history expansion and quick\n\ 1282 substitution. The first character is the history\n\ 1283 substitution character, usually `!'. The second is\n\ 1284 the `quick substitution' character, usually `^'. The\n\ 1285 third is the `history comment' character, usually `#'.\n\ 1286 HISTIGNORE A colon-separated list of patterns used to decide which\n\ 1287 commands should be saved on the history list.\n\ 1288"), 1289#endif /* HELP_BUILTIN */ 1290 (char *)NULL 1291}; 1292#if defined (PUSHD_AND_POPD) 1293char * const pushd_doc[] = { 1294#if defined (HELP_BUILTIN) 1295N_("Adds a directory to the top of the directory stack, or rotates\n\ 1296 the stack, making the new top of the stack the current working\n\ 1297 directory. With no arguments, exchanges the top two directories.\n\ 1298 \n\ 1299 +N Rotates the stack so that the Nth directory (counting\n\ 1300 from the left of the list shown by `dirs', starting with\n\ 1301 zero) is at the top.\n\ 1302 \n\ 1303 -N Rotates the stack so that the Nth directory (counting\n\ 1304 from the right of the list shown by `dirs', starting with\n\ 1305 zero) is at the top.\n\ 1306 \n\ 1307 -n suppress the normal change of directory when adding directories\n\ 1308 to the stack, so only the stack is manipulated.\n\ 1309 \n\ 1310 dir adds DIR to the directory stack at the top, making it the\n\ 1311 new current working directory.\n\ 1312 \n\ 1313 You can see the directory stack with the `dirs' command."), 1314#endif /* HELP_BUILTIN */ 1315 (char *)NULL 1316}; 1317#endif /* PUSHD_AND_POPD */ 1318#if defined (PUSHD_AND_POPD) 1319char * const popd_doc[] = { 1320#if defined (HELP_BUILTIN) 1321N_("Removes entries from the directory stack. With no arguments,\n\ 1322 removes the top directory from the stack, and cd's to the new\n\ 1323 top directory.\n\ 1324 \n\ 1325 +N removes the Nth entry counting from the left of the list\n\ 1326 shown by `dirs', starting with zero. For example: `popd +0'\n\ 1327 removes the first directory, `popd +1' the second.\n\ 1328 \n\ 1329 -N removes the Nth entry counting from the right of the list\n\ 1330 shown by `dirs', starting with zero. For example: `popd -0'\n\ 1331 removes the last directory, `popd -1' the next to last.\n\ 1332 \n\ 1333 -n suppress the normal change of directory when removing directories\n\ 1334 from the stack, so only the stack is manipulated.\n\ 1335 \n\ 1336 You can see the directory stack with the `dirs' command."), 1337#endif /* HELP_BUILTIN */ 1338 (char *)NULL 1339}; 1340#endif /* PUSHD_AND_POPD */ 1341#if defined (PUSHD_AND_POPD) 1342char * const dirs_doc[] = { 1343#if defined (HELP_BUILTIN) 1344N_("Display the list of currently remembered directories. Directories\n\ 1345 find their way onto the list with the `pushd' command; you can get\n\ 1346 back up through the list with the `popd' command.\n\ 1347 \n\ 1348 The -l flag specifies that `dirs' should not print shorthand versions\n\ 1349 of directories which are relative to your home directory. This means\n\ 1350 that `~/bin' might be displayed as `/homes/bfox/bin'. The -v flag\n\ 1351 causes `dirs' to print the directory stack with one entry per line,\n\ 1352 prepending the directory name with its position in the stack. The -p\n\ 1353 flag does the same thing, but the stack position is not prepended.\n\ 1354 The -c flag clears the directory stack by deleting all of the elements.\n\ 1355 \n\ 1356 +N displays the Nth entry counting from the left of the list shown by\n\ 1357 dirs when invoked without options, starting with zero.\n\ 1358 \n\ 1359 -N displays the Nth entry counting from the right of the list shown by\n\ 1360 dirs when invoked without options, starting with zero."), 1361#endif /* HELP_BUILTIN */ 1362 (char *)NULL 1363}; 1364#endif /* PUSHD_AND_POPD */ 1365char * const shopt_doc[] = { 1366#if defined (HELP_BUILTIN) 1367N_("Toggle the values of variables controlling optional behavior.\n\ 1368 The -s flag means to enable (set) each OPTNAME; the -u flag\n\ 1369 unsets each OPTNAME. The -q flag suppresses output; the exit\n\ 1370 status indicates whether each OPTNAME is set or unset. The -o\n\ 1371 option restricts the OPTNAMEs to those defined for use with\n\ 1372 `set -o'. With no options, or with the -p option, a list of all\n\ 1373 settable options is displayed, with an indication of whether or\n\ 1374 not each is set."), 1375#endif /* HELP_BUILTIN */ 1376 (char *)NULL 1377}; 1378char * const printf_doc[] = { 1379#if defined (HELP_BUILTIN) 1380N_("printf formats and prints ARGUMENTS under control of the FORMAT. FORMAT\n\ 1381 is a character string which contains three types of objects: plain\n\ 1382 characters, which are simply copied to standard output, character escape\n\ 1383 sequences which are converted and copied to the standard output, and\n\ 1384 format specifications, each of which causes printing of the next successive\n\ 1385 argument. In addition to the standard printf(1) formats, %b means to\n\ 1386 expand backslash escape sequences in the corresponding argument, and %q\n\ 1387 means to quote the argument in a way that can be reused as shell input.\n\ 1388 If the -v option is supplied, the output is placed into the value of the\n\ 1389 shell variable VAR rather than being sent to the standard output."), 1390#endif /* HELP_BUILTIN */ 1391 (char *)NULL 1392}; 1393#if defined (PROGRAMMABLE_COMPLETION) 1394char * const complete_doc[] = { 1395#if defined (HELP_BUILTIN) 1396N_("For each NAME, specify how arguments are to be completed.\n\ 1397 If the -p option is supplied, or if no options are supplied, existing\n\ 1398 completion specifications are printed in a way that allows them to be\n\ 1399 reused as input. The -r option removes a completion specification for\n\ 1400 each NAME, or, if no NAMEs are supplied, all completion specifications."), 1401#endif /* HELP_BUILTIN */ 1402 (char *)NULL 1403}; 1404#endif /* PROGRAMMABLE_COMPLETION */ 1405#if defined (PROGRAMMABLE_COMPLETION) 1406char * const compgen_doc[] = { 1407#if defined (HELP_BUILTIN) 1408N_("Display the possible completions depending on the options. Intended\n\ 1409 to be used from within a shell function generating possible completions.\n\ 1410 If the optional WORD argument is supplied, matches against WORD are\n\ 1411 generated."), 1412#endif /* HELP_BUILTIN */ 1413 (char *)NULL 1414}; 1415#endif /* PROGRAMMABLE_COMPLETION */ 1416