summaryrefslogtreecommitdiff
path: root/doc/bashref.info
diff options
context:
space:
mode:
Diffstat (limited to 'doc/bashref.info')
-rw-r--r--doc/bashref.info4132
1 files changed, 2493 insertions, 1639 deletions
diff --git a/doc/bashref.info b/doc/bashref.info
index 01450d08..3b2b6da8 100644
--- a/doc/bashref.info
+++ b/doc/bashref.info
@@ -1,4 +1,4 @@
-This is Info file bashref.info, produced by Makeinfo version 1.67 from
+This is Info file bashref.info, produced by Makeinfo version 1.68 from
the input file /usr/homes/chet/src/bash/src/doc/bashref.texi.
INFO-DIR-SECTION Utilities
@@ -9,9 +9,9 @@ END-INFO-DIR-ENTRY
This text is a brief description of the features that are present in
the Bash shell.
-This is Edition 2.3, last updated 20 January 1999,
+This is Edition 2.4, last updated 14 March 2000,
of `The GNU Bash Reference Manual',
-for `Bash', Version 2.03.
+for `Bash', Version 2.04.
Copyright (C) 1991-1999 Free Software Foundation, Inc.
@@ -38,8 +38,8 @@ Bash Features
This text is a brief description of the features that are present in
the Bash shell.
- This is Edition 2.3, last updated 20 January 1999, of `The GNU Bash
-Reference Manual', for `Bash', Version 2.03.
+ This is Edition 2.4, last updated 14 March 2000, of `The GNU Bash
+Reference Manual', for `Bash', Version 2.04.
Copyright (C) 1991, 1993, 1996 Free Software Foundation, Inc.
@@ -63,8 +63,9 @@ on shell behavior.
* Basic Shell Features:: The shell "building blocks".
-* Bourne Shell Features:: Features similar to those found in the
- Bourne shell.
+* Shell Builtin Commands:: Commands that are a part of the shell.
+
+* Shell Variables:: Variables used or set by Bash.
* Bash Features:: Features found only in Bash.
@@ -81,6 +82,10 @@ on shell behavior.
* Reporting Bugs:: How to report bugs in Bash.
+* Major Differences From The Bourne Shell:: A terse list of the differences
+ between Bash and historical
+ versions of /bin/sh.
+
* Builtin Index:: Index of Bash builtin commands.
* Reserved Word Index:: Index of Bash reserved words.
@@ -111,23 +116,23 @@ File: bashref.info, Node: What is Bash?, Next: What is a shell?, Up: Introduc
What is Bash?
=============
- Bash is the shell, or command language interpreter, that will appear
-in the GNU operating system. The name is an acronym for the
-`Bourne-Again SHell', a pun on Steve Bourne, the author of the direct
-ancestor of the current Unix shell `/bin/sh', which appeared in the
-Seventh Edition Bell Labs Research version of Unix.
+ Bash is the shell, or command language interpreter, for the GNU
+operating system. The name is an acronym for the `Bourne-Again SHell',
+a pun on Stephen Bourne, the author of the direct ancestor of the
+current Unix shell `/bin/sh', which appeared in the Seventh Edition
+Bell Labs Research version of Unix.
- Bash is an `sh'-compatible shell that incorporates useful features
-from the Korn shell `ksh' and the C shell `csh'. It is intended to be
-a conformant implementation of the IEEE POSIX Shell and Tools
-specification (IEEE Working Group 1003.2). It offers functional
+ Bash is largely compatible with `sh' and incorporates useful
+features from the Korn shell `ksh' and the C shell `csh'. It is
+intended to be a conformant implementation of the IEEE POSIX Shell and
+Tools specification (IEEE Working Group 1003.2). It offers functional
improvements over `sh' for both interactive and programming use.
- While the GNU operating system will include a version of `csh', Bash
-will be the default shell. Like other GNU software, Bash is quite
-portable. It currently runs on nearly every version of Unix and a few
-other operating systems - independently-supported ports exist for
-MS-DOS, OS/2, Windows 95, and Windows NT.
+ While the GNU operating system provides other shells, including a
+version of `csh', Bash is the default shell. Like other GNU software,
+Bash is quite portable. It currently runs on nearly every version of
+Unix and a few other operating systems - independently-supported ports
+exist for MS-DOS, OS/2, Windows 95/98, and Windows NT.

File: bashref.info, Node: What is a shell?, Prev: What is Bash?, Up: Introduction
@@ -137,35 +142,41 @@ What is a shell?
At its base, a shell is simply a macro processor that executes
commands. A Unix shell is both a command interpreter, which provides
-the user interface to the rich set of Unix utilities, and a programming
+the user interface to the rich set of GNU utilities, and a programming
language, allowing these utilitites to be combined. Files containing
commands can be created, and become commands themselves. These new
-commands have the same status as system commands in directories like
+commands have the same status as system commands in directories such as
`/bin', allowing users or groups to establish custom environments.
- A shell allows execution of Unix commands, both synchronously and
+ A shell allows execution of GNU commands, both synchronously and
asynchronously. The shell waits for synchronous commands to complete
before accepting more input; asynchronous commands continue to execute
in parallel with the shell while it reads and executes additional
commands. The "redirection" constructs permit fine-grained control of
-the input and output of those commands, and the shell allows control
-over the contents of their environment. Unix shells also provide a
-small set of built-in commands ("builtins") implementing functionality
-impossible (e.g., `cd', `break', `continue', and `exec'), or
-inconvenient (`history', `getopts', `kill', or `pwd', for example) to
-obtain via separate utilities. Shells may be used interactively or
-non-interactively: they accept input typed from the keyboard or from a
-file. All of the shell builtins are described in subsequent sections.
+the input and output of those commands. Moreover, the shell allows
+control over the contents of commands' environments. Shells may be
+used interactively or non-interactively: they accept input typed from
+the keyboard or from a file.
+
+ Shells also provide a small set of built-in commands ("builtins")
+implementing functionality impossible or inconvenient to obtain via
+separate utilities. For example, `cd', `break', `continue', and
+`exec') cannot be implemented outside of the shell because they
+directly manipulate the shell itself. The `history', `getopts',
+`kill', or `pwd' builtins, among others, could be implemented in
+separate utilities, but they are more convenient to use as builtin
+commands. All of the shell builtins are described in subsequent
+sections.
While executing commands is essential, most of the power (and
complexity) of shells is due to their embedded programming languages.
Like any high-level language, the shell provides variables, flow
control constructs, quoting, and functions.
- Shells have begun offering features geared specifically for
-interactive use rather than to augment the programming language. These
-interactive features include job control, command line editing, history
-and aliases. Each of these features is described in this manual.
+ Shells offer features geared specifically for interactive use rather
+than to augment the programming language. These interactive features
+include job control, command line editing, history and aliases. Each
+of these features is described in this manual.

File: bashref.info, Node: Definitions, Next: Basic Shell Features, Prev: Introduction, Up: Top
@@ -241,12 +252,12 @@ Definitions
A synonym for `exit status'.
`signal'
- A mechanism by which a process may be notified by the kernal of an
+ A mechanism by which a process may be notified by the kernel of an
event occurring in the system.
`special builtin'
A shell builtin command that has been classified as special by the
- POSIX.2 standard.
+ POSIX 1003.2 standard.
`token'
A sequence of characters considered a single unit by the shell.
@@ -256,7 +267,7 @@ Definitions
A `token' that is not an `operator'.

-File: bashref.info, Node: Basic Shell Features, Next: Bourne Shell Features, Prev: Definitions, Up: Top
+File: bashref.info, Node: Basic Shell Features, Next: Shell Builtin Commands, Prev: Definitions, Up: Top
Basic Shell Features
********************
@@ -298,6 +309,20 @@ Shell Syntax
* Comments:: How to specify comments.
+ When the shell reads input, it proceeds through a sequence of
+operations. If the input indicates the beginning of a comment, the
+shell ignores the comment symbol (`#'), and the rest of that line.
+
+ Otherwise, roughly speaking, the shell reads its input and divides
+the input into words and operators, employing the quoting rules to
+select which meanings to assign various words and characters.
+
+ The shell then parses these tokens into commands and other
+constructs, removes the special meaning of certain words or characters,
+expands others, redirects input and output as needed, executes the
+specified command, waits for the command's exit status, and makes that
+exit status available for further inspection or processing.
+

File: bashref.info, Node: Shell Operation, Next: Quoting, Up: Shell Syntax
@@ -321,7 +346,7 @@ reads and executes a command. Basically, the shell does the following:
4. Performs the various shell expansions (*note Shell Expansions::.),
breaking the expanded tokens into lists of filenames (*note
- Filename Expansion::.) and commands and arguments.
+ Filename Expansion::.) and commands and arguments.
5. Performs any necessary redirections (*note Redirections::.) and
removes the redirection operators and their operands from the
@@ -356,10 +381,13 @@ or words to the shell. Quoting can be used to disable special
treatment for special characters, to prevent reserved words from being
recognized as such, and to prevent parameter expansion.
- Each of the shell metacharacters (*note Definitions::.) has special
+ Each of the shell metacharacters (*note Definitions::.) has special
meaning to the shell and must be quoted if it is to represent itself.
-There are three quoting mechanisms: the ESCAPE CHARACTER, single
-quotes, and double quotes.
+When the command history expansion facilities are being used, the
+HISTORY EXPANSION character, usually `!', must be quoted to prevent
+history expansion. *Note Bash History Facilities:: for more details
+concerning history expansion. There are three quoting mechanisms: the
+ESCAPE CHARACTER, single quotes, and double quotes.

File: bashref.info, Node: Escape Character, Next: Single Quotes, Up: Quoting
@@ -380,9 +408,9 @@ File: bashref.info, Node: Single Quotes, Next: Double Quotes, Prev: Escape Ch
Single Quotes
.............
- Enclosing characters in single quotes preserves the literal value of
-each character within the quotes. A single quote may not occur between
-single quotes, even when preceded by a backslash.
+ Enclosing characters in single quotes (`'') preserves the literal
+value of each character within the quotes. A single quote may not occur
+between single quotes, even when preceded by a backslash.

File: bashref.info, Node: Double Quotes, Next: ANSI-C Quoting, Prev: Single Quotes, Up: Quoting
@@ -390,16 +418,16 @@ File: bashref.info, Node: Double Quotes, Next: ANSI-C Quoting, Prev: Single Q
Double Quotes
.............
- Enclosing characters in double quotes preserves the literal value of
-all characters within the quotes, with the exception of `$', ``', and
-`\'. The characters `$' and ``' retain their special meaning within
-double quotes (*note Shell Expansions::.). The backslash retains its
-special meaning only when followed by one of the following characters:
-`$', ``', `"', `\', or `newline'. Within double quotes, backslashes
-that are followed by one of these characters are removed. Backslashes
-preceding characters without a special meaning are left unmodified. A
-double quote may be quoted within double quotes by preceding it with a
-backslash.
+ Enclosing characters in double quotes (`"') preserves the literal
+value of all characters within the quotes, with the exception of `$',
+``', and `\'. The characters `$' and ``' retain their special meaning
+within double quotes (*note Shell Expansions::.). The backslash
+retains its special meaning only when followed by one of the following
+characters: `$', ``', `"', `\', or `newline'. Within double quotes,
+backslashes that are followed by one of these characters are removed.
+Backslashes preceding characters without a special meaning are left
+unmodified. A double quote may be quoted within double quotes by
+preceding it with a backslash.
The special parameters `*' and `@' have special meaning when in
double quotes (*note Shell Parameter Expansion::.).
@@ -442,6 +470,9 @@ present, are decoded as follows:
`\\'
backslash
+`\''
+ single quote
+
`\NNN'
the character whose `ASCII' code is the octal value NNN (one to
three digits)
@@ -450,7 +481,8 @@ present, are decoded as follows:
the character whose `ASCII' code is the hexadecimal value NNN (one
to three digits)
-The result is single-quoted, as if the dollar sign had not been present.
+The expanded result is single-quoted, as if the dollar sign had not
+been present.

File: bashref.info, Node: Locale Translation, Prev: ANSI-C Quoting, Up: Quoting
@@ -475,8 +507,8 @@ Bash Builtins::.), a word beginning with `#' causes that word and all
remaining characters on that line to be ignored. An interactive shell
without the `interactive_comments' option enabled does not allow
comments. The `interactive_comments' option is on by default in
-interactive shells. *Note Is This Shell Interactive?::, for a
-description of what makes a shell interactive.
+interactive shells. *Note Interactive Shells::, for a description of
+what makes a shell interactive.

File: bashref.info, Node: Shell Commands, Next: Shell Functions, Prev: Shell Syntax, Up: Basic Shell Features
@@ -484,6 +516,14 @@ File: bashref.info, Node: Shell Commands, Next: Shell Functions, Prev: Shell
Shell Commands
==============
+ A simple shell command such as `echo a b c' consists of the command
+itself followed by arguments, separated by spaces.
+
+ More complex shell commands are composed of simple commands arranged
+together in a variety of ways: in a pipeline in which the output of one
+command becomes the input of a second, in a loop or conditional
+construct, or in some other grouping.
+
* Menu:
* Simple Commands:: The most common type of command.
@@ -503,11 +543,12 @@ Simple Commands
A simple command is the kind of command encountered most often.
It's just a sequence of words separated by `blank's, terminated by one
of the shell's control operators (*note Definitions::.). The first
-word generally specifies a command to be executed.
+word generally specifies a command to be executed, with the rest of the
+words being that command's arguments.
The return status (*note Exit Status::.) of a simple command is its
-exit status as provided by the POSIX.1 `waitpid' function, or 128+N if
-the command was terminated by signal N.
+exit status as provided by the POSIX 1003.1 `waitpid' function, or
+128+N if the command was terminated by signal N.

File: bashref.info, Node: Pipelines, Next: Lists, Prev: Simple Commands, Up: Shell Commands
@@ -560,9 +601,10 @@ followed by `;' and `&', which have equal precedence.
If a command is terminated by the control operator `&', the shell
executes the command asynchronously in a subshell. This is known as
executing the command in the BACKGROUND. The shell does not wait for
-the command to finish, and the return status is 0 (true). The standard
-input for asynchronous commands, in the absence of any explicit
-redirections, is redirected from `/dev/null'.
+the command to finish, and the return status is 0 (true). When job
+control is not active (*note Job Control::.), the standard input for
+asynchronous commands, in the absence of any explicit redirections, is
+redirected from `/dev/null'.
Commands separated by a `;' are executed sequentially; the shell
waits for each command to terminate in turn. The return status is the
@@ -570,15 +612,15 @@ exit status of the last command executed.
The control operators `&&' and `||' denote AND lists and OR lists,
respectively. An AND list has the form
- COMMAND && COMMAND2
+ COMMAND1 && COMMAND2
-COMMAND2 is executed if, and only if, COMMAND returns an exit status of
-zero.
+COMMAND2 is executed if, and only if, COMMAND1 returns an exit status
+of zero.
An OR list has the form
- COMMAND || COMMAND2
+ COMMAND1 || COMMAND2
-COMMAND2 is executed if, and only if, COMMAND returns a non-zero exit
+COMMAND2 is executed if, and only if, COMMAND1 returns a non-zero exit
status.
The return status of AND and OR lists is the exit status of the last
@@ -592,7 +634,7 @@ Looping Constructs
Bash supports the following looping constructs.
- Note that wherever you see a `;' in the description of a command's
+ Note that wherever a `;' appears in the description of a command's
syntax, it may be replaced with one or more newlines.
`until'
@@ -618,10 +660,25 @@ syntax, it may be replaced with one or more newlines.
for NAME [in WORDS ...]; do COMMANDS; done
Expand WORDS, and execute COMMANDS once for each member in the
resultant list, with NAME bound to the current member. If `in
- WORDS' is not present, `in "$@"' is assumed. The return status is
- the exit status of the last command that executes. If there are
- no items in the expansion of WORDS, no commands are executed, and
- the return status is zero.
+ WORDS' is not present, the `for' command executes the COMMANDS
+ once for each positional parameter that is set, as if `in "$@"'
+ had been specified (*note Special Parameters::.). The return
+ status is the exit status of the last command that executes. If
+ there are no items in the expansion of WORDS, no commands are
+ executed, and the return status is zero.
+
+ An alternate form of the `for' command is also supported:
+
+ for (( EXPR1 ; EXPR2 ; EXPR3 )) ; do COMMANDS ; done
+ First, the arithmetic expression EXPR1 is evaluated according to
+ the rules described below (*note Shell Arithmetic::.). The
+ arithmetic expression EXPR2 is then evaluated repeatedly until it
+ evaluates to zero. Each time EXPR2 evaluates to a non-zero value,
+ COMMANDS are executed and the arithmetic expression EXPR3 is
+ evaluated. If any expression is omitted, it behaves as if it
+ evaluates to 1. The return value is the exit status of the last
+ command in LIST that is executed, or false if any of the
+ expressions is invalid.
The `break' and `continue' builtins (*note Bourne Shell Builtins::.)
may be used to control loop execution.
@@ -767,8 +824,8 @@ Conditional Constructs
`EXPRESSION1 || EXPRESSION2'
True if either EXPRESSION1 or EXPRESSION2 is true.
- The && and || commands do not execute EXPRESSION2 if the value of
- EXPRESSION1 is sufficient to determine the return value of the
+ The `&&' and `||' commands do not execute EXPRESSION2 if the value
+ of EXPRESSION1 is sufficient to determine the return value of the
entire conditional expression.

@@ -815,7 +872,9 @@ Shell Functions
Shell functions are a way to group commands for later execution
using a single name for the group. They are executed just like a
-"regular" command. Shell functions are executed in the current shell
+"regular" command. When the name of a shell function is used as a
+simple command name, the list of commands associated with that function
+name is executed. Shell functions are executed in the current shell
context; no new process is created to interpret them.
Functions are declared using this syntax:
@@ -828,11 +887,18 @@ COMMAND-LIST between { and }. This list is executed whenever NAME is
specified as the name of a command. The exit status of a function is
the exit status of the last command executed in the body.
+ Note that for historical reasons, the curly braces that surround the
+body of the function must be separated from the body by `blank's or
+newlines. This is because the braces are reserved words and are only
+recognized as such when they are separated by whitespace. Also, the
+COMMAND-LIST must be terminated with a semicolon or a newline.
+
When a function is executed, the arguments to the function become
the positional parameters during its execution (*note Positional
Parameters::.). The special parameter `#' that expands to the number of
positional parameters is updated to reflect the change. Positional
-parameter `0' is unchanged.
+parameter `0' is unchanged. The `FUNCNAME' variable is set to the name
+of the function while the function is executing.
If the builtin command `return' is executed in a function, the
function completes and execution resumes with the next command after
@@ -892,8 +958,10 @@ Positional Parameters
other than the single digit `0'. Positional parameters are assigned
from the shell's arguments when it is invoked, and may be reassigned
using the `set' builtin command. Positional parameter `N' may be
-referenced as `${N}'. Positional parameters may not be assigned to
-with assignment statements. The positional parameters are temporarily
+referenced as `${N}', or as `$N' when `N' consists of a single digit.
+Positional parameters may not be assigned to with assignment statements.
+The `set' and `shift' builtins are used to set and unset them (*note
+Shell Builtin Commands::.). The positional parameters are temporarily
replaced when a shell function is executed (*note Shell Functions::.).
When a positional parameter consisting of more than a single digit
@@ -933,9 +1001,9 @@ only be referenced; assignment to them is not allowed.
pipeline.
`-'
- Expands to the current option flags as specified upon invocation,
- by the `set' builtin command, or those set by the shell itself
- (such as the `-i' option).
+ (A hyphen.) Expands to the current option flags as specified upon
+ invocation, by the `set' builtin command, or those set by the
+ shell itself (such as the `-i' option).
`$'
Expands to the process ID of the shell. In a `()' subshell, it
@@ -955,12 +1023,13 @@ only be referenced; assignment to them is not allowed.
used to invoke Bash, as given by argument zero.
`_'
- At shell startup, set to the absolute filename of the shell or
- shell script being executed as passed in the argument list.
- Subsequently, expands to the last argument to the previous command,
- after expansion. Also set to the full pathname of each command
- executed and placed in the environment exported to that command.
- When checking mail, this parameter holds the name of the mail file.
+ (An underscore.) At shell startup, set to the absolute filename
+ of the shell or shell script being executed as passed in the
+ argument list. Subsequently, expands to the last argument to the
+ previous command, after expansion. Also set to the full pathname
+ of each command executed and placed in the environment exported to
+ that command. When checking mail, this parameter holds the name
+ of the mail file.

File: bashref.info, Node: Shell Expansions, Next: Redirections, Prev: Shell Parameters, Up: Basic Shell Features
@@ -1014,7 +1083,7 @@ single word to a single word. The only exceptions to this are the
expansions of `"$@"' (*note Special Parameters::.) and `"${NAME[@]}"'
(*note Arrays::.).
- After all expansions, `quote removal' (*note Quote Removal::.) is
+ After all expansions, `quote removal' (*note Quote Removal::.) is
performed.

@@ -1028,7 +1097,7 @@ generated. This mechanism is similar to FILENAME EXPANSION (*note
Filename Expansion::.), but the file names generated need not exist.
Patterns to be brace expanded take the form of an optional PREAMBLE,
followed by a series of comma-separated strings between a pair of
-braces, followed by an optional POSTSCRIPT. The preamble is prepended
+braces, followed by an optional POSTSCRIPT. The preamble is prefixed
to each string contained within the braces, and the postscript is then
appended to each resulting string, expanding left to right.
@@ -1040,7 +1109,9 @@ are not sorted; left to right order is preserved. For example,
Brace expansion is performed before any other expansions, and any
characters special to other expansions are preserved in the result. It
is strictly textual. Bash does not apply any syntactic interpretation
-to the context of the expansion or the text between the braces.
+to the context of the expansion or the text between the braces. To
+avoid conflicts with parameter expansion, the string `${' is not
+considered eligible for brace expansion.
A correctly-formed brace expansion must contain unquoted opening and
closing braces, and at least one unquoted comma. Any incorrectly
@@ -1144,13 +1215,17 @@ of variable indirection is introduced. Bash uses the value of the
variable formed from the rest of PARAMETER as the name of the variable;
this variable is then expanded and that value is used in the rest of
the substitution, rather than the value of PARAMETER itself. This is
-known as `indirect expansion'.
+known as `indirect expansion'. The exception to this is the expansion
+of ${!PREFIX*} described below.
In each of the cases below, WORD is subject to tilde expansion,
parameter expansion, command substitution, and arithmetic expansion.
-When not performing substring expansion, Bash tests for a parameter
+
+ When not performing substring expansion, Bash tests for a parameter
that is unset or null; omitting the colon results in a test only for a
-parameter that is unset.
+parameter that is unset. Put another way, if the colon is included,
+the operator tests for both existence and that the value is not null;
+if the colon is omitted, the operator tests only for existence.
`${PARAMETER:-WORD}'
If PARAMETER is unset or null, the expansion of WORD is
@@ -1174,9 +1249,9 @@ parameter that is unset.
`${PARAMETER:OFFSET}'
`${PARAMETER:OFFSET:LENGTH}'
- Expands to up to LENGTH characters of PARAMETER, starting at the
+ Expands to up to LENGTH characters of PARAMETER starting at the
character specified by OFFSET. If LENGTH is omitted, expands to
- the substring of PARAMETER, starting at the character specified by
+ the substring of PARAMETER starting at the character specified by
OFFSET. LENGTH and OFFSET are arithmetic expressions (*note Shell
Arithmetic::.). This is referred to as Substring Expansion.
@@ -1190,6 +1265,10 @@ parameter that is unset.
the positional parameters are used, in which case the indexing
starts at 1.
+`${!PREFIX*}'
+ Expands to the names of variables whose names begin with PREFIX,
+ separated by the first character of the `IFS' special variable.
+
`${#PARAMETER}'
The length in characters of the expanded value of PARAMETER is
substituted. If PARAMETER is `*' or `@', the value substituted is
@@ -1250,7 +1329,8 @@ Command Substitution
--------------------
Command substitution allows the output of a command to replace the
-command name. There are two forms:
+command itself. Command substitution occurs when a command is enclosed
+as follows:
$(COMMAND)
or
@@ -1316,7 +1396,9 @@ some file in `/dev/fd'. The name of this file is passed as an argument
to the current command as the result of the expansion. If the
`>(LIST)' form is used, writing to the file will provide input for
LIST. If the `<(LIST)' form is used, the file passed as an argument
-should be read to obtain the output of LIST.
+should be read to obtain the output of LIST. Note that no space may
+appear between the `<' or `>' and the left parenthesis, otherwise the
+construct would be interpreted as a redirection.
When available, process substitution is performed simultaneously with
parameter and variable expansion, command substitution, and arithmetic
@@ -1346,7 +1428,7 @@ characters is also treated as a delimiter. If the value of `IFS' is
null, no word splitting occurs.
Explicit null arguments (`""' or `''') are retained. Unquoted
-implicit null arguments, resulting from the expansion of PARAMETERs
+implicit null arguments, resulting from the expansion of parameters
that have no values, are removed. If a parameter with no value is
expanded within double quotes, a null argument results and is retained.
@@ -1363,17 +1445,17 @@ Filename Expansion
* Pattern Matching:: How the shell matches patterns.
After word splitting, unless the `-f' option has been set (*note The
-Set Builtin::.), Bash scans each word for the characters `*', `?', `(',
-and `['. If one of these characters appears, then the word is regarded
-as a PATTERN, and replaced with an alphabetically sorted list of file
+Set Builtin::.), Bash scans each word for the characters `*', `?', and
+`['. If one of these characters appears, then the word is regarded as
+a PATTERN, and replaced with an alphabetically sorted list of file
names matching the pattern. If no matching file names are found, and
the shell option `nullglob' is disabled, the word is left unchanged.
If the `nullglob' option is set, and no matches are found, the word is
removed. If the shell option `nocaseglob' is enabled, the match is
performed without regard to the case of alphabetic characters.
- When a pattern is used for filename generation, the character `.' at
-the start of a filename or immediately following a slash must be
+ When a pattern is used for filename generation, the character `.'
+at the start of a filename or immediately following a slash must be
matched explicitly, unless the shell option `dotglob' is set. When
matching a file name, the slash character must always be matched
explicitly. In other cases, the `.' character is not treated specially.
@@ -1384,7 +1466,7 @@ description of the `nocaseglob', `nullglob', and `dotglob' options.
The `GLOBIGNORE' shell variable may be used to restrict the set of
filenames matching a pattern. If `GLOBIGNORE' is set, each matching
filename that also matches one of the patterns in `GLOBIGNORE' is
-removed from the list of matches. The filenames `.' and `..' are
+removed from the list of matches. The filenames `.' and `..' are
always ignored, even when `GLOBIGNORE' is set. However, setting
`GLOBIGNORE' has the effect of enabling the `dotglob' shell option, so
all other filenames beginning with a `.' will match. To get the old
@@ -1421,7 +1503,7 @@ quoted if they are to be matched literally.
Within `[' and `]', CHARACTER CLASSES can be specified using the
syntax `[:'CLASS`:]', where CLASS is one of the following classes
- defined in the POSIX.2 standard:
+ defined in the POSIX 1003.2 standard:
alnum alpha ascii blank cntrl digit graph lower
print punct space upper xdigit
@@ -1432,7 +1514,7 @@ quoted if they are to be matched literally.
collation weight (as defined by the current locale) as the
character C.
- Within `[' and `]', the syntax `[.'SYMBOL`.]' matches the
+ Within `[' and `]', the syntax `[.'SYMBOL`.]' matches the
collating symbol SYMBOL.
If the `extglob' shell option is enabled using the `shopt' builtin,
@@ -1488,21 +1570,46 @@ refers to the standard output (file descriptor 1).
The word following the redirection operator in the following
descriptions, unless otherwise noted, is subjected to brace expansion,
tilde expansion, parameter expansion, command substitution, arithmetic
-expansion, quote removal, and filename expansion. If it expands to
-more than one word, Bash reports an error.
+expansion, quote removal, filename expansion, and word splitting. If
+it expands to more than one word, Bash reports an error.
Note that the order of redirections is significant. For example,
the command
ls > DIRLIST 2>&1
-directs both standard output and standard error to the file DIRLIST,
-while the command
+directs both standard output (file descriptor 1) and standard error
+(file descriptor 2) to the file DIRLIST, while the command
ls 2>&1 > DIRLIST
directs only the standard output to file DIRLIST, because the standard
error was duplicated as standard output before the standard output was
redirected to DIRLIST.
+ Bash handles several filenames specially when they are used in
+redirections, as described in the following table:
+
+`/dev/fd/FD'
+ If FD is a valid integer, file descriptor FD is duplicated.
+
+`/dev/stdin'
+ File descriptor 0 is duplicated.
+
+`/dev/stdout'
+ File descriptor 1 is duplicated.
+
+`/dev/stderr'
+ File descriptor 2 is duplicated.
+
+`/dev/tcp/HOST/PORT'
+ If HOST is a valid hostname or Internet address, and PORT is an
+ integer port number, Bash attempts to open a TCP connection to the
+ corresponding socket.
+
+`/dev/udp/HOST/PORT'
+ If HOST is a valid hostname or Internet address, and PORT is an
+ integer port number, Bash attempts to open a UDP connection to the
+ corresponding socket.
+
A failure to open or create a file causes the redirection to fail.
Redirecting Input
@@ -1529,7 +1636,7 @@ to zero size.
If the redirection operator is `>', and the `noclobber' option to
the `set' builtin has been enabled, the redirection will fail if the
-filename whose name results from the expansion of WORD exists and is a
+file whose name results from the expansion of WORD exists and is a
regular file. If the redirection operator is `>|', or the redirection
operator is `>' and the `noclobber' option is not enabled, the
redirection is attempted even if the file named by WORD exists.
@@ -1576,14 +1683,14 @@ as the standard input for a command.
HERE-DOCUMENT
DELIMITER
- No parameter expansion, command substitution, filename expansion, or
-arithmetic expansion is performed on WORD. If any characters in WORD
+ No parameter expansion, command substitution, arithmetic expansion,
+or filename expansion is performed on WORD. If any characters in WORD
are quoted, the DELIMITER is the result of quote removal on WORD, and
the lines in the here-document are not expanded. If WORD is unquoted,
all lines of the here-document are subjected to parameter expansion,
command substitution, and arithmetic expansion. In the latter case,
-the pair `\newline' is ignored, and `\' must be used to quote the
-characters `\', `$', and ``'.
+the character sequence `\newline' is ignored, and `\' must be used to
+quote the characters `\', `$', and ``'.
If the redirection operator is `<<-', then all leading tab
characters are stripped from input lines and the line containing
@@ -1703,7 +1810,7 @@ taken.
1. If the command name contains no slashes, the shell attempts to
locate it. If there exists a shell function by that name, that
- function is invoked as described above in *Note Shell Functions::.
+ function is invoked as described in *Note Shell Functions::.
2. If the name does not match a function, the shell searches for it
in the list of shell builtins. If a match is found, that builtin
@@ -1809,7 +1916,7 @@ Environment
ENVIRONMENT. This is a list of name-value pairs, of the form
`name=value'.
- Bash allows you to manipulate the environment in several ways. On
+ Bash provides several ways to manipulate the environment. On
invocation, the shell scans its own environment and creates a parameter
for each name found, automatically marking it for EXPORT to child
processes. Executed commands inherit the environment. The `export'
@@ -1936,39 +2043,62 @@ invoked to interpret the script, with the exception that the locations
of commands remembered by the parent (see the description of `hash' in
*Note Bourne Shell Builtins::) are retained by the child.
- Most versions of Unix make this a part of the kernel's command
-execution mechanism. If the first line of a script begins with the two
-characters `#!', the remainder of the line specifies an interpreter for
-the program. The arguments to the interpreter consist of a single
-optional argument following the interpreter name on the first line of
-the script file, followed by the name of the script file, followed by
-the rest of the arguments. Bash will perform this action on operating
-systems that do not handle it themselves. Note that some older
-versions of Unix limit the interpreter name and argument to a maximum
-of 32 characters.
+ Most versions of Unix make this a part of the operating system's
+command execution mechanism. If the first line of a script begins with
+the two characters `#!', the remainder of the line specifies an
+interpreter for the program. Thus, you can specify Bash, `awk', Perl,
+or some other interpreter and write the rest of the script file in that
+language.
+
+ The arguments to the interpreter consist of a single optional
+argument following the interpreter name on the first line of the script
+file, followed by the name of the script file, followed by the rest of
+the arguments. Bash will perform this action on operating systems that
+do not handle it themselves. Note that some older versions of Unix
+limit the interpreter name and argument to a maximum of 32 characters.
+
+ Bash scripts often begin with `#! /bin/bash' (assuming that Bash has
+been installed in `/bin'), since this ensures that Bash will be used to
+interpret the script, even if it is executed under another shell.

-File: bashref.info, Node: Bourne Shell Features, Next: Bash Features, Prev: Basic Shell Features, Up: Top
+File: bashref.info, Node: Shell Builtin Commands, Next: Shell Variables, Prev: Basic Shell Features, Up: Top
-Bourne Shell Style Features
-***************************
+Shell Builtin Commands
+**********************
* Menu:
* Bourne Shell Builtins:: Builtin commands inherited from the Bourne
Shell.
-* Bourne Shell Variables:: Variables which Bash uses in the same way
- as the Bourne Shell.
-* Other Bourne Shell Features:: Addtional aspects of Bash which behave in
- the same way as the Bourne Shell.
+* Bash Builtins:: Table of builtins specific to Bash.
+* The Set Builtin:: This builtin is so overloaded it
+ deserves its own section.
+* Special Builtins:: Builtin commands classified specially by
+ POSIX.2.
- This section briefly summarizes things which Bash inherits from the
-Bourne Shell: builtins, variables, and other features. It also lists
-the significant differences between Bash and the Bourne Shell. Many of
-the builtins have been extended by POSIX or Bash.
+ Builtin commands are contained within the shell itself. When the
+name of a builtin command is used as the first word of a simple command
+(*note Simple Commands::.), the shell executes the command directly,
+without invoking another program. Builtin commands are necessary to
+implement functionality impossible or inconvenient to obtain with
+separate utilities.
+
+ This section briefly the builtins which Bash inherits from the
+Bourne Shell, as well as the builtin commands which are unique to or
+have been extended in Bash.
+
+ Several builtin commands are described in other chapters: builtin
+commands which provide the Bash interface to the job control facilities
+(*note Job Control Builtins::.), the directory stack (*note Directory
+Stack Builtins::.), the command history (*note Bash History
+Builtins::.), and the programmable completion facilities (*note
+Programmable Completion Builtins::.).
+
+ Many of the builtins have been extended by POSIX or Bash.

-File: bashref.info, Node: Bourne Shell Builtins, Next: Bourne Shell Variables, Up: Bourne Shell Features
+File: bashref.info, Node: Bourne Shell Builtins, Next: Bash Builtins, Up: Shell Builtin Commands
Bourne Shell Builtins
=====================
@@ -1977,22 +2107,23 @@ Bourne Shell Builtins
Shell. These commands are implemented as specified by the POSIX 1003.2
standard.
-`:'
+`: (a colon)'
: [ARGUMENTS]
Do nothing beyond expanding ARGUMENTS and performing redirections.
The return status is zero.
-`.'
+`. (a period)'
. FILENAME [ARGUMENTS]
Read and execute commands from the FILENAME argument in the
current shell context. If FILENAME does not contain a slash, the
- `$PATH' variable is used to find FILENAME. The current directory
+ `PATH' variable is used to find FILENAME. The current directory
is searched if FILENAME is not found in `$PATH'. If any ARGUMENTS
are supplied, they become the positional parameters when FILENAME
is executed. Otherwise the positional parameters are unchanged.
The return status is the exit status of the last command executed,
or zero if no commands are executed. If FILENAME is not found, or
- cannot be read, the return status is non-zero.
+ cannot be read, the return status is non-zero. This builtin is
+ equivalent to `source'.
`break'
break [N]
@@ -2031,17 +2162,18 @@ standard.
exec [-cl] [-a NAME] [COMMAND [ARGUMENTS]]
If COMMAND is supplied, it replaces the shell without creating a
new process. If the `-l' option is supplied, the shell places a
- dash in the zeroth arg passed to COMMAND. This is what the
- `login' program does. The `-c' option causes COMMAND to be
- executed with an empty environment. If `-a' is supplied, the
- shell passes NAME as the zeroth argument to COMMAND. If no
+ dash at the beginning of the zeroth arg passed to COMMAND. This
+ is what the `login' program does. The `-c' option causes COMMAND
+ to be executed with an empty environment. If `-a' is supplied,
+ the shell passes NAME as the zeroth argument to COMMAND. If no
COMMAND is specified, redirections may be used to affect the
current shell environment. If there are no redirection errors, the
return status is zero; otherwise the return status is non-zero.
`exit'
exit [N]
- Exit the shell, returning a status of N to the shell's parent.
+ Exit the shell, returning a status of N to the shell's parent. If
+ N is omitted, the exit status is that of the last command executed.
Any trap on `EXIT' is executed before the shell terminates.
`export'
@@ -2060,18 +2192,19 @@ standard.
`getopts'
getopts OPTSTRING NAME [ARGS]
`getopts' is used by shell scripts to parse positional parameters.
- OPTSTRING contains the option letters to be recognized; if a letter
- is followed by a colon, the option is expected to have an
- argument, which should be separated from it by white space. Each
- time it is invoked, `getopts' places the next option in the shell
- variable NAME, initializing NAME if it does not exist, and the
- index of the next argument to be processed into the variable
- `OPTIND'. `OPTIND' is initialized to 1 each time the shell or a
- shell script is invoked. When an option requires an argument,
- `getopts' places that argument into the variable `OPTARG'. The
- shell does not reset `OPTIND' automatically; it must be manually
- reset between multiple calls to `getopts' within the same shell
- invocation if a new set of parameters is to be used.
+ OPTSTRING contains the option characters to be recognized; if a
+ character is followed by a colon, the option is expected to have an
+ argument, which should be separated from it by white space. The
+ colon (`:') and question mark (`?') may not be used as option
+ characters. Each time it is invoked, `getopts' places the next
+ option in the shell variable NAME, initializing NAME if it does
+ not exist, and the index of the next argument to be processed into
+ the variable `OPTIND'. `OPTIND' is initialized to 1 each time the
+ shell or a shell script is invoked. When an option requires an
+ argument, `getopts' places that argument into the variable
+ `OPTARG'. The shell does not reset `OPTIND' automatically; it
+ must be manually reset between multiple calls to `getopts' within
+ the same shell invocation if a new set of parameters is to be used.
When the end of options is encountered, `getopts' exits with a
return value greater than zero. `OPTIND' is set to the index of
@@ -2112,12 +2245,12 @@ standard.
`pwd'
pwd [-LP]
- Print the current working directory. If the `-P' option is
- supplied, the path printed will not contain symbolic links. If
- the `-L' option is supplied, the path printed may contain symbolic
- links. The return status is zero unless an error is encountered
- while determining the name of the current directory or an invalid
- option is supplied.
+ Print the absolute pathname of the current working directory. If
+ the `-P' option is supplied, the pathname printed will not contain
+ symbolic links. If the `-L' option is supplied, the pathname
+ printed may contain symbolic links. The return status is zero
+ unless an error is encountered while determining the name of the
+ current directory or an invalid option is supplied.
`readonly'
readonly [-apf] [NAME] ...
@@ -2134,12 +2267,15 @@ standard.
`return'
return [N]
- Cause a shell function to exit with the return value N. This may
- also be used to terminate execution of a script being executed
- with the `.' builtin, returning either N or the exit status of the
+ Cause a shell function to exit with the return value N. If N is
+ not supplied, the return value is the exit status of the last
+ command executed in the function. This may also be used to
+ terminate execution of a script being executed with the `.' (or
+ `source') builtin, returning either N or the exit status of the
last command executed within the script as the exit status of the
script. The return status is false if `return' is used outside a
- function and not during the execution of a script by `.'.
+ function and not during the execution of a script by `.' or
+ `source'.
`shift'
shift [N]
@@ -2148,8 +2284,9 @@ standard.
Parameters represented by the numbers `$#' to N+1 are unset. N
must be a non-negative number less than or equal to `$#'. If N is
zero or greater than `$#', the positional parameters are not
- changed. The return status is zero unless N is greater than `$#'
- or less than zero, non-zero otherwise.
+ changed. If N is not supplied, it is assumed to be 1. The return
+ status is zero unless N is greater than `$#' or less than zero,
+ non-zero otherwise.
`test'
`['
@@ -2157,6 +2294,9 @@ standard.
must be a separate argument. Expressions are composed of the
primaries described below in *Note Bash Conditional Expressions::.
+ When the `[' form is used, the last argument to the command must
+ be a `]'.
+
Expressions may be combined using the following operators, listed
in decreasing order of precedence.
@@ -2225,16 +2365,17 @@ standard.
specified signals are reset to the values they had when the shell
was started. If ARG is the null string, then the signal specified
by each SIGSPEC is ignored by the shell and commands it invokes.
- If ARG is `-p', the shell displays the trap commands associated
- with each SIGSPEC. If no arguments are supplied, or only `-p' is
- given, `trap' prints the list of commands associated with each
- signal number in a form that may be reused as shell input. Each
- SIGSPEC is either a signal name such as `SIGINT' (with or without
- the `SIG' prefix) or a signal number. If a SIGSPEC is `0' or
- `EXIT', ARG is executed when the shell exits. If a SIGSPEC is
- `DEBUG', the command ARG is executed after every simple command.
- The `-l' option causes the shell to print a list of signal names
- and their corresponding numbers.
+ If ARG is not present and `-p' has been supplied, the shell
+ displays the trap commands associated with each SIGSPEC. If no
+ arguments are supplied, or only `-p' is given, `trap' prints the
+ list of commands associated with each signal number in a form that
+ may be reused as shell input. Each SIGSPEC is either a signal
+ name such as `SIGINT' (with or without the `SIG' prefix) or a
+ signal number. If a SIGSPEC is `0' or `EXIT', ARG is executed
+ when the shell exits. If a SIGSPEC is `DEBUG', the command ARG is
+ executed after every simple command. The `-l' option causes the
+ shell to print a list of signal names and their corresponding
+ numbers.
Signals ignored upon entry to the shell cannot be trapped or reset.
Trapped signals are reset to their original values in a child
@@ -2256,6 +2397,10 @@ standard.
the mode is successfully changed or if no MODE argument is
supplied, and non-zero otherwise.
+ Note that when the mode is interpreted as an octal number, each
+ number of the umask is subtracted from `7'. Thus, a umask of `022'
+ results in permissions of `755'.
+
`unset'
unset [-fv] [NAME]
Each variable or function NAME is removed. If no options are
@@ -2266,628 +2411,37 @@ standard.
zero unless a NAME does not exist or is readonly.

-File: bashref.info, Node: Bourne Shell Variables, Next: Other Bourne Shell Features, Prev: Bourne Shell Builtins, Up: Bourne Shell Features
-
-Bourne Shell Variables
-======================
-
- Bash uses certain shell variables in the same way as the Bourne
-shell. In some cases, Bash assigns a default value to the variable.
-
-`CDPATH'
- A colon-separated list of directories used as a search path for
- the `cd' builtin command.
-
-`HOME'
- The current user's home directory; the default for the `cd' builtin
- command. The value of this variable is also used by tilde
- expansion (*note Tilde Expansion::.).
-
-`IFS'
- A list of characters that separate fields; used when the shell
- splits words as part of expansion.
-
-`MAIL'
- If this parameter is set to a filename and the `MAILPATH' variable
- is not set, Bash informs the user of the arrival of mail in the
- specified file.
-
-`MAILPATH'
- A colon-separated list of filenames which the shell periodically
- checks for new mail. Each list entry can specify the message that
- is printed when new mail arrives in the mail file by separating
- the file name from the message with a `?'. When used in the text
- of the message, `$_' expands to the name of the current mail file.
-
-`OPTARG'
- The value of the last option argument processed by the `getopts'
- builtin.
-
-`OPTIND'
- The index of the last option argument processed by the `getopts'
- builtin.
-
-`PATH'
- A colon-separated list of directories in which the shell looks for
- commands.
-
-`PS1'
- The primary prompt string. The default value is `\s-\v\$ '.
-
-`PS2'
- The secondary prompt string. The default value is `> '.
-
-
-File: bashref.info, Node: Other Bourne Shell Features, Prev: Bourne Shell Variables, Up: Bourne Shell Features
-
-Other Bourne Shell Features
-===========================
-
-* Menu:
-
-* Major Differences From The Bourne Shell:: Major differences between
- Bash and the Bourne shell.
-
- Bash implements essentially the same grammar, parameter and variable
-expansion, redirection, and quoting as the Bourne Shell. Bash uses the
-POSIX 1003.2 standard as the specification of how these features are to
-be implemented. There are some differences between the traditional
-Bourne shell and Bash; this section quickly details the differences of
-significance. A number of these differences are explained in greater
-depth in subsequent sections.
-
-
-File: bashref.info, Node: Major Differences From The Bourne Shell, Up: Other Bourne Shell Features
-
-Major Differences From The SVR4.2 Bourne Shell
-----------------------------------------------
-
- * Bash is POSIX-conformant, even where the POSIX specification
- differs from traditional `sh' behavior.
-
- * Bash has multi-character invocation options (*note Invoking
- Bash::.).
-
- * Bash has command-line editing (*note Command Line Editing::.) and
- the `bind' builtin.
-
- * Bash has command history (*note Bash History Facilities::.) and the
- `history' and `fc' builtins to manipulate it.
-
- * Bash implements `csh'-like history expansion (*note History
- Interaction::.).
-
- * Bash has one-dimensional array variables (*note Arrays::.), and the
- appropriate variable expansions and assignment syntax to use them.
- Several of the Bash builtins take options to act on arrays. Bash
- provides a number of built-in array variables.
-
- * The `$'...'' quoting syntax, which expands ANSI-C
- backslash-escaped characters in the text between the single quotes,
- is supported (*note ANSI-C Quoting::.).
-
- * Bash supports the `$"..."' quoting syntax to do locale-specific
- translation of the characters between the double quotes. The
- `-D', `--dump-strings', and `--dump-po-strings' invocation options
- list the translatable strings found in a script (*note Locale
- Translation::.).
-
- * Bash implements the `!' keyword to negate the return value of a
- pipeline (*note Pipelines::.). Very useful when an `if' statement
- needs to act only if a test fails.
-
- * Bash has the `time' reserved word and command timing (*note
- Pipelines::.). The display of the timing statistics may be
- controlled with the `TIMEFORMAT' variable.
-
- * Bash includes the `select' compound command, which allows the
- generation of simple menus (*note Conditional Constructs::.).
-
- * Bash includes the `[[' compound command, which makes conditional
- testing part of the shell grammar (*note Conditional
- Constructs::.).
-
- * Bash includes brace expansion (*note Brace Expansion::.) and tilde
- expansion (*note Tilde Expansion::.).
-
- * Bash implements command aliases and the `alias' and `unalias'
- builtins (*note Aliases::.).
-
- * Bash provides shell arithmetic, the `((' compound command (*note
- Conditional Constructs::.), and arithmetic expansion (*note Shell
- Arithmetic::.).
-
- * Variables present in the shell's initial environment are
- automatically exported to child processes. The Bourne shell does
- not normally do this unless the variables are explicitly marked
- using the `export' command.
-
- * Bash includes the POSIX pattern removal `%', `#', `%%' and `##'
- expansions to remove leading or trailing substrings from variable
- values (*note Shell Parameter Expansion::.).
-
- * The expansion `${#xx}', which returns the length of `${xx}', is
- supported (*note Shell Parameter Expansion::.).
-
- * The expansion `${var:'OFFSET`[:'LENGTH`]}', which expands to the
- substring of `var''s value of length LENGTH, beginning at OFFSET,
- is present (*note Shell Parameter Expansion::.).
-
- * The expansion `${var/[/]'PATTERN`[/'REPLACEMENT`]}', which matches
- PATTERN and replaces it with REPLACEMENT in the value of `var', is
- available (*note Shell Parameter Expansion::.).
-
- * Bash has INDIRECT variable expansion using `${!word}' (*note Shell
- Parameter Expansion::.).
-
- * Bash can expand positional parameters beyond `$9' using `${NUM}'.
-
- * The POSIX `$()' form of command substitution is implemented (*note
- Command Substitution::.), and preferred to the Bourne shell's ```'
- (which is also implemented for backwards compatibility).
-
- * Bash has process substitution (*note Process Substitution::.).
-
- * Bash automatically assigns variables that provide information
- about the current user (`UID', `EUID', and `GROUPS'), the current
- host (`HOSTTYPE', `OSTYPE', `MACHTYPE', and `HOSTNAME'), and the
- instance of Bash that is running (`BASH', `BASH_VERSION', and
- `BASH_VERSINFO'). *Note Bash Variables::, for details.
-
- * The `IFS' variable is used to split only the results of expansion,
- not all words (*note Word Splitting::.). This closes a
- longstanding shell security hole.
-
- * Bash implements the full set of POSIX.2 filename expansion
- operators, including CHARACTER CLASSES, EQUIVALENCE CLASSES, and
- COLLATING SYMBOLS (*note Filename Expansion::.).
-
- * Bash implements extended pattern matching features when the
- `extglob' shell option is enabled (*note Pattern Matching::.).
-
- * It is possible to have a variable and a function with the same
- name; `sh' does not separate the two name spaces.
-
- * Bash functions are permitted to have local variables using the
- `local' builtin, and thus useful recursive functions may be
- written.
-
- * Variable assignments preceding commands affect only that command,
- even builtins and functions (*note Environment::.). In `sh', all
- variable assignments preceding commands are global unless the
- command is executed from the file system.
-
- * Bash performs filename expansion on filenames specified as operands
- to input and output redirection operators.
-
- * Bash contains the `<>' redirection operator, allowing a file to be
- opened for both reading and writing, and the `&>' redirection
- operator, for directing standard output and standard error to the
- same file (*note Redirections::.).
-
- * The `noclobber' option is available to avoid overwriting existing
- files with output redirection (*note The Set Builtin::.). The
- `>|' redirection operator may be used to override `noclobber'.
-
- * The Bash `cd' and `pwd' builtins (*note Bourne Shell Builtins::.)
- each take `-L' and `-P' builtins to switch between logical and
- physical modes.
-
- * Bash allows a function to override a builtin with the same name,
- and provides access to that builtin's functionality within the
- function via the `builtin' and `command' builtins (*note Bash
- Builtins::.).
-
- * The `command' builtin allows selective disabling of functions when
- command lookup is performed (*note Bash Builtins::.).
-
- * Individual builtins may be enabled or disabled using the `enable'
- builtin (*note Bash Builtins::.).
-
- * The Bash `exec' builtin takes additional options that allow users
- to control the contents of the environment passed to the executed
- command, and what the zeroth argument to the command is to be
- (*note Bourne Shell Builtins::.).
-
- * Shell functions may be exported to children via the environment
- using `export -f' (*note Shell Functions::.).
-
- * The Bash `export', `readonly', and `declare' builtins can take a
- `-f' option to act on shell functions, a `-p' option to display
- variables with various attributes set in a format that can be used
- as shell input, a `-n' option to remove various variable
- attributes, and `name=value' arguments to set variable attributes
- and values simultaneously.
-
- * The Bash `hash' builtin allows a name to be associated with an
- arbitrary filename, even when that filename cannot be found by
- searching the `$PATH', using `hash -p' (*note Bourne Shell
- Builtins::.).
-
- * Bash includes a `help' builtin for quick reference to shell
- facilities (*note Bash Builtins::.).
-
- * The `printf' builtin is available to display formatted output
- (*note Bash Builtins::.).
-
- * The Bash `read' builtin (*note Bash Builtins::.) will read a line
- ending in `\' with the `-r' option, and will use the `REPLY'
- variable as a default if no arguments are supplied. The Bash
- `read' builtin also accepts a prompt string with the `-p' option
- and will use Readline to obtain the line when given the `-e'
- option.
-
- * The `return' builtin may be used to abort execution of scripts
- executed with the `.' or `source' builtins (*note Bourne Shell
- Builtins::.).
-
- * Bash includes the `shopt' builtin, for finer control of shell
- optional capabilities (*note Bash Builtins::.).
-
- * Bash has much more optional behavior controllable with the `set'
- builtin (*note The Set Builtin::.).
-
- * The `test' builtin (*note Bourne Shell Builtins::.) is slightly
- different, as it implements the POSIX algorithm, which specifies
- the behavior based on the number of arguments.
-
- * The `trap' builtin (*note Bourne Shell Builtins::.) allows a
- `DEBUG' pseudo-signal specification, similar to `EXIT'. Commands
- specified with a `DEBUG' trap are executed after every simple
- command. The `DEBUG' trap is not inherited by shell functions.
-
- * The Bash `type' builtin is more extensive and gives more
- information about the names it finds (*note Bash Builtins::.).
-
- * The Bash `umask' builtin permits a `-p' option to cause the output
- to be displayed in the form of a `umask' command that may be
- reused as input (*note Bourne Shell Builtins::.).
-
- * Bash implements a `csh'-like directory stack, and provides the
- `pushd', `popd', and `dirs' builtins to manipulate it (*note The
- Directory Stack::.). Bash also makes the directory stack visible
- as the value of the `DIRSTACK' shell variable.
-
- * Bash interprets special backslash-escaped characters in the prompt
- strings when interactive (*note Printing a Prompt::.).
-
- * The Bash restricted mode is more useful (*note The Restricted
- Shell::.); the SVR4.2 shell restricted mode is too limited.
-
- * The `disown' builtin can remove a job from the internal shell job
- table (*note Job Control Builtins::.) or suppress the sending of
- `SIGHUP' to a job when the shell exits as the result of a `SIGHUP'.
-
- * The SVR4.2 shell has two privilege-related builtins (`mldmode' and
- `priv') not present in Bash.
-
- * Bash does not have the `stop' or `newgrp' builtins.
-
- * Bash does not use the `SHACCT' variable or perform shell
- accounting.
-
- * The SVR4.2 `sh' uses a `TIMEOUT' variable like Bash uses `TMOUT'.
-
-More features unique to Bash may be found in *Note Bash Features::.
-
-Implementation Differences From The SVR4.2 Shell
-------------------------------------------------
-
- Since Bash is a completely new implementation, it does not suffer
-from many of the limitations of the SVR4.2 shell. For instance:
-
- * Bash does not fork a subshell when redirecting into or out of a
- shell control structure such as an `if' or `while' statement.
-
- * Bash does not allow unbalanced quotes. The SVR4.2 shell will
- silently insert a needed closing quote at `EOF' under certain
- circumstances. This can be the cause of some hard-to-find errors.
-
- * The SVR4.2 shell uses a baroque memory management scheme based on
- trapping `SIGSEGV'. If the shell is started from a process with
- `SIGSEGV' blocked (e.g., by using the `system()' C library
- function call), it misbehaves badly.
-
- * In a questionable attempt at security, the SVR4.2 shell, when
- invoked without the `-p' option, will alter its real and effective
- UID and GID if they are less than some magic threshold value,
- commonly 100. This can lead to unexpected results.
-
- * The SVR4.2 shell does not allow users to trap `SIGSEGV',
- `SIGALRM', or `SIGCHLD'.
-
- * The SVR4.2 shell does not allow the `IFS', `MAILCHECK', `PATH',
- `PS1', or `PS2' variables to be unset.
-
- * The SVR4.2 shell treats `^' as the undocumented equivalent of `|'.
-
- * Bash allows multiple option arguments when it is invoked (`-x -v');
- the SVR4.2 shell allows only one option argument (`-xv'). In
- fact, some versions of the shell dump core if the second argument
- begins with a `-'.
-
- * The SVR4.2 shell exits a script if any builtin fails; Bash exits a
- script only if one of the POSIX.2 special builtins fails, and only
- for certain failures, as enumerated in the POSIX.2 standard.
-
- * The SVR4.2 shell behaves differently when invoked as `jsh' (it
- turns on job control).
-
-
-File: bashref.info, Node: Bash Features, Next: Job Control, Prev: Bourne Shell Features, Up: Top
-
-Bash Features
-*************
-
- This section describes features unique to Bash.
-
-* Menu:
-
-* Invoking Bash:: Command line options that you can give
- to Bash.
-* Bash Startup Files:: When and how Bash executes scripts.
-* Is This Shell Interactive?:: Determining the state of a running Bash.
-* Bash Builtins:: Table of builtins specific to Bash.
-* The Set Builtin:: This builtin is so overloaded it
- deserves its own section.
-* Bash Conditional Expressions:: Primitives used in composing expressions for
- the `test' builtin.
-* Bash Variables:: List of variables that exist in Bash.
-* Shell Arithmetic:: Arithmetic on shell variables.
-* Aliases:: Substituting one command for another.
-* Arrays:: Array Variables.
-* The Directory Stack:: History of visited directories.
-* Printing a Prompt:: Controlling the PS1 string.
-* The Restricted Shell:: A more controlled mode of shell execution.
-* Bash POSIX Mode:: Making Bash behave more closely to what
- the POSIX standard specifies.
-
-
-File: bashref.info, Node: Invoking Bash, Next: Bash Startup Files, Up: Bash Features
-
-Invoking Bash
-=============
-
- bash [long-opt] [-ir] [-abefhkmnptuvxdBCDHP] [-o OPTION] [ARGUMENT ...]
- bash [long-opt] [-abefhkmnptuvxdBCDHP] [-o OPTION] -c STRING [ARGUMENT ...]
- bash [long-opt] -s [-abefhkmnptuvxdBCDHP] [-o OPTION] [ARGUMENT ...]
-
- In addition to the single-character shell command-line options
-(*note The Set Builtin::.), there are several multi-character options
-that you can use. These options must appear on the command line before
-the single-character options in order for them to be recognized.
-
-`--dump-po-strings'
- Equivalent to `-D', but the output is in the GNU `gettext' PO
- (portable object) file format.
-
-`--dump-strings'
- Equivalent to `-D'.
-
-`--help'
- Display a usage message on standard output and exit sucessfully.
-
-`--login'
- Make this shell act as if it were directly invoked by login. This
- is equivalent to `exec -l bash' but can be issued from another
- shell, such as `csh'. `exec bash --login' will replace the
- current shell with a Bash login shell.
-
-`--noediting'
- Do not use the GNU Readline library (*note Command Line Editing::.)
- to read interactive command lines.
-
-`--noprofile'
- Don't load the system-wide startup file `/etc/profile' or any of
- the personal initialization files `~/.bash_profile',
- `~/.bash_login', or `~/.profile' when Bash is invoked as a login
- shell.
-
-`--norc'
- Don't read the `~/.bashrc' initialization file in an interactive
- shell. This is on by default if the shell is invoked as `sh'.
-
-`--posix'
- Change the behavior of Bash where the default operation differs
- from the POSIX 1003.2 standard to match the standard. This is
- intended to make Bash behave as a strict superset of that
- standard. *Note Bash POSIX Mode::, for a description of the Bash
- POSIX mode.
-
-`--rcfile FILENAME'
- Execute commands from FILENAME (instead of `~/.bashrc') in an
- interactive shell.
-
-`--restricted'
- Make the shell a restricted shell (*note The Restricted Shell::.).
-
-`--verbose'
- Equivalent to `-v'.
-
-`--version'
- Show version information for this instance of Bash on the standard
- output and exit successfully.
-
- There are several single-character options that may be supplied at
-invocation which are not available with the `set' builtin.
-
-`-c STRING'
- Read and execute commands from STRING after processing the
- options, then exit. Any remaining arguments are assigned to the
- positional parameters, starting with `$0'.
-
-`-i'
- Force the shell to run interactively.
-
-`-r'
- Make the shell a restricted shell (*note The Restricted Shell::.).
-
-`-s'
- If this option is present, or if no arguments remain after option
- processing, then commands are read from the standard input. This
- option allows the positional parameters to be set when invoking an
- interactive shell.
-
-`-D'
- A list of all double-quoted strings preceded by `$' is printed on
- the standard ouput. These are the strings that are subject to
- language translation when the current locale is not `C' or `POSIX'
- (*note Locale Translation::.). This implies the `-n' option; no
- commands will be executed.
-
-`--'
- A `--' signals the end of options and disables further option
- processing. Any arguments after the `--' are treated as filenames
- and arguments.
-
- An *interactive* shell is one whose input and output are both
-connected to terminals (as determined by `isatty(3)'), or one started
-with the `-i' option.
-
- If arguments remain after option processing, and neither the `-c'
-nor the `-s' option has been supplied, the first argument is assumed to
-be the name of a file containing shell commands (*note Shell
-Scripts::.). When Bash is invoked in this fashion, `$0' is set to the
-name of the file, and the positional parameters are set to the
-remaining arguments. Bash reads and executes commands from this file,
-then exits. Bash's exit status is the exit status of the last command
-executed in the script. If no commands are executed, the exit status
-is 0.
-
-
-File: bashref.info, Node: Bash Startup Files, Next: Is This Shell Interactive?, Prev: Invoking Bash, Up: Bash Features
-
-Bash Startup Files
-==================
-
- This section describs how Bash executes its startup files. If any
-of the files exist but cannot be read, Bash reports an error. Tildes
-are expanded in file names as described above under Tilde Expansion
-(*note Tilde Expansion::.).
-
- When Bash is invoked as an interactive login shell, or as a
-non-interactive shell with the `--login' option, it first reads and
-executes commands from the file `/etc/profile', if that file exists.
-After reading that file, it looks for `~/.bash_profile',
-`~/.bash_login', and `~/.profile', in that order, and reads and
-executes commands from the first one that exists and is readable. The
-`--noprofile' option may be used when the shell is started to inhibit
-this behavior.
-
- When a login shell exits, Bash reads and executes commands from the
-file `~/.bash_logout', if it exists.
-
- When an interactive shell that is not a login shell is started, Bash
-reads and executes commands from `~/.bashrc', if that file exists.
-This may be inhibited by using the `--norc' option. The `--rcfile
-FILE' option will force Bash to read and execute commands from FILE
-instead of `~/.bashrc'.
-
- So, typically, your `~/.bash_profile' contains the line
- `if [ -f `~/.bashrc' ]; then . `~/.bashrc'; fi'
-
-after (or before) any login-specific initializations.
-
- When Bash is started non-interactively, to run a shell script, for
-example, it looks for the variable `BASH_ENV' in the environment,
-expands its value if it appears there, and uses the expanded value as
-the name of a file to read and execute. Bash behaves as if the
-following command were executed:
- `if [ -n "$BASH_ENV" ]; then . "$BASH_ENV"; fi'
-
-but the value of the `PATH' variable is not used to search for the file
-name.
-
- If Bash is invoked with the name `sh', it tries to mimic the startup
-behavior of historical versions of `sh' as closely as possible, while
-conforming to the POSIX standard as well.
-
- When invoked as an interactive login shell, or as a non-interactive
-shell with the `--login' option, it first attempts to read and execute
-commands from `/etc/profile' and `~/.profile', in that order. The
-`--noprofile' option may be used to inhibit this behavior. When
-invoked as an interactive shell with the name `sh', Bash looks for the
-variable `ENV', expands its value if it is defined, and uses the
-expanded value as the name of a file to read and execute. Since a
-shell invoked as `sh' does not attempt to read and execute commands
-from any other startup files, the `--rcfile' option has no effect. A
-non-interactive shell invoked with the name `sh' does not attempt to
-read any other startup files.
-
- When invoked as `sh', Bash enters POSIX mode after the startup files
-are read.
-
- When Bash is started in POSIX mode, as with the `--posix' command
-line option, it follows the POSIX standard for startup files. In this
-mode, interactive shells expand the `ENV' variable and commands are
-read and executed from the file whose name is the expanded value. No
-other startup files are read.
-
- Bash attempts to determine when it is being run by the remote shell
-daemon, usually `rshd'. If Bash determines it is being run by rshd, it
-reads and executes commands from `~/.bashrc', if that file exists and
-is readable. It will not do this if invoked as `sh'. The `--norc'
-option may be used to inhibit this behavior, and the `--rcfile' option
-may be used to force another file to be read, but `rshd' does not
-generally invoke the shell with those options or allow them to be
-specified.
-
- If Bash is started with the effective user (group) id not equal to
-the real user (group) id, and the `-p' option is not supplied, no
-startup files are read, shell functions are not inherited from the
-environment, the `SHELLOPTS' variable, if it appears in the
-environment, is ignored, and the effective user id is set to the real
-user id. If the `-p' option is supplied at invocation, the startup
-behavior is the same, but the effective user id is not reset.
-
-
-File: bashref.info, Node: Is This Shell Interactive?, Next: Bash Builtins, Prev: Bash Startup Files, Up: Bash Features
-
-Is This Shell Interactive?
-==========================
-
- As defined in *Note Invoking Bash::, an interactive shell is one
-whose input and output are both connected to terminals (as determined
-by `isatty(3)'), or one started with the `-i' option.
-
- To determine within a startup script whether Bash is running
-interactively or not, examine the variable `$PS1'; it is unset in
-non-interactive shells, and set in interactive shells. Thus:
-
- if [ -z "$PS1" ]; then
- echo This shell is not interactive
- else
- echo This shell is interactive
- fi
-
- Alternatively, startup scripts may test the value of the `-' special
-parameter. It contains `i' when the shell is interactive. For example:
-
- case "$-" in
- *i*) echo This shell is interactive ;;
- *) echo This shell is not interactive ;;
- esac
-
-
-File: bashref.info, Node: Bash Builtins, Next: The Set Builtin, Prev: Is This Shell Interactive?, Up: Bash Features
+File: bashref.info, Node: Bash Builtins, Next: The Set Builtin, Prev: Bourne Shell Builtins, Up: Shell Builtin Commands
Bash Builtin Commands
=====================
This section describes builtin commands which are unique to or have
-been extended in Bash.
+been extended in Bash. Some of these commands are specified in the
+POSIX 1003.2 standard.
+
+`alias'
+ alias [`-p'] [NAME[=VALUE] ...]
+
+ Without arguments or with the `-p' option, `alias' prints the list
+ of aliases on the standard output in a form that allows them to be
+ reused as input. If arguments are supplied, an alias is defined
+ for each NAME whose VALUE is given. If no VALUE is given, the name
+ and value of the alias is printed. Aliases are described in *Note
+ Aliases::.
`bind'
bind [-m KEYMAP] [-lpsvPSV]
bind [-m KEYMAP] [-q FUNCTION] [-u FUNCTION] [-r KEYSEQ]
bind [-m KEYMAP] -f FILENAME
+ bind [-m KEYMAP] -x KEYSEQ:SHELL-COMMAND
bind [-m KEYMAP] KEYSEQ:FUNCTION-NAME
- Display current Readline (*note Command Line Editing::.) key and
+ Display current Readline (*note Command Line Editing::.) key and
function bindings, or bind a key sequence to a Readline function
- or macro. The binding syntax accepted is identical to that of
- `.inputrc' (*note Readline Init File::.), but each binding must be
- passed as a separate argument: e.g.,
+ or macro. The binding syntax accepted is identical to that of a
+ Readline initialization file (*note Readline Init File::.), but
+ each binding must be passed as a separate argument: e.g.,
`"\C-x\C-r":re-read-init-file'. Options, if supplied, have the
following meanings:
@@ -2903,21 +2457,24 @@ been extended in Bash.
`-p'
Display Readline function names and bindings in such a way
- that they can be re-read.
+ that they can be used as input or in a Readline
+ initialization file.
`-P'
List current Readline function names and bindings.
`-v'
Display Readline variable names and values in such a way that
- they can be re-read.
+ they can be used as input or in a Readline initialization
+ file.
`-V'
List current Readline variable names and values.
`-s'
Display Readline key sequences bound to macros and the
- strings they output in such a way that they can be re-read.
+ strings they output in such a way that they can be used as
+ input or in a Readline initialization file.
`-S'
Display Readline key sequences bound to macros and the
@@ -2935,6 +2492,9 @@ been extended in Bash.
`-r KEYSEQ'
Remove any current binding for KEYSEQ.
+ `-x KEYSEQ:SHELL-COMMAND'
+ Cause SHELL-COMMAND to be executed whenever KEYSEQ is entered.
+
The return status is zero unless an invalid option is supplied or
an error occurs.
@@ -3019,6 +2579,8 @@ been extended in Bash.
interpretation of the following backslash-escaped characters is
enabled. The `-E' option disables the interpretation of these
escape characters, even on systems where they are interpreted by
+ default. The `xpg_echo' shell option may be used to dynamically
+ determine whether or not `echo' expands these escape characters by
default. `echo' interprets the following escape sequences:
`\a'
alert (bell)
@@ -3062,7 +2624,7 @@ been extended in Bash.
enable [-n] [-p] [-f FILENAME] [-ads] [NAME ...]
Enable and disable builtin shell commands. Disabling a builtin
allows a disk command which has the same name as a shell builtin
- to be executed with specifying a full pathname, even though the
+ to be executed without specifying a full pathname, even though the
shell normally searches for builtins before disk commands. If
`-n' is used, the NAMEs become disabled. Otherwise NAMEs are
enabled. For example, to use the `test' binary found via `$PATH'
@@ -3081,17 +2643,19 @@ been extended in Bash.
If there are no options, a list of the shell builtins is displayed.
The `-s' option restricts `enable' to the POSIX special builtins.
If `-s' is used with `-f', the new builtin becomes a special
- builtin.
+ builtin (*note Special Builtins::.).
The return status is zero unless a NAME is not a shell builtin or
there is an error loading a new builtin from a shared object.
`help'
- help [PATTERN]
+ help [-s] [PATTERN]
Display helpful information about builtin commands. If PATTERN is
specified, `help' gives detailed help on all commands matching
- PATTERN, otherwise a list of the builtins is printed. The return
- status is zero unless no command matches PATTERN.
+ PATTERN, otherwise a list of the builtins is printed. The `-s'
+ option restricts the information displayed to a short usage
+ synopsis. The return status is zero unless no command matches
+ PATTERN.
`let'
let EXPRESSION [EXPRESSION]
@@ -3101,12 +2665,14 @@ been extended in Bash.
evaluates to 0, `let' returns 1; otherwise 0 is returned.
`local'
- local NAME[=VALUE]
+ local [OPTION] NAME[=VALUE]
For each argument, a local variable named NAME is created, and
- assigned VALUE. `local' can only be used within a function; it
- makes the variable NAME have a visible scope restricted to that
- function and its children. The return status is zero unless
- `local' is used outside a function or an invalid NAME is supplied.
+ assigned VALUE. The OPTION can be any of the options accepted by
+ `declare'. `local' can only be used within a function; it makes
+ the variable NAME have a visible scope restricted to that function
+ and its children. The return status is zero unless `local' is
+ used outside a function, an invalid NAME is supplied, or NAME is a
+ readonly variable.
`logout'
logout [N]
@@ -3129,10 +2695,11 @@ been extended in Bash.
The FORMAT is reused as necessary to consume all of the ARGUMENTS.
If the FORMAT requires more ARGUMENTS than are supplied, the extra
format specifications behave as if a zero value or null string, as
- appropriate, had been supplied.
+ appropriate, had been supplied. The return value is zero on
+ success, non-zero on failure.
`read'
- read [-a ANAME] [-p PROMPT] [-er] [NAME ...]
+ read [-ers] [-a ANAME] [-p PROMPT] [-t TIMEOUT] [-n NCHARS] [-d DELIM] [NAME ...]
One line is read from the standard input, and the first word is
assigned to the first NAME, the second word to the second NAME,
and so on, with leftover words and their intervening separators
@@ -3143,19 +2710,8 @@ been extended in Bash.
may be used to remove any special meaning for the next character
read and for line continuation. If no names are supplied, the
line read is assigned to the variable `REPLY'. The return code is
- zero, unless end-of-file is encountered. Options, if supplied,
- have the following meanings:
-
- `-r'
- If this option is given, backslash does not act as an escape
- character. The backslash is considered to be part of the
- line. In particular, a backslash-newline pair may not be
- used as a line continuation.
-
- `-p PROMPT'
- Display PROMPT, without a trailing newline, before attempting
- to read any input. The prompt is displayed only if input is
- coming from a terminal.
+ zero, unless end-of-file is encountered or `read' times out.
+ Options, if supplied, have the following meanings:
`-a ANAME'
The words are assigned to sequential indices of the array
@@ -3163,10 +2719,39 @@ been extended in Bash.
ANAME before the assignment. Other NAME arguments are
ignored.
+ `-d DELIM'
+ The first character of DELIM is used to terminate the input
+ line, rather than newline.
+
`-e'
Readline (*note Command Line Editing::.) is used to obtain
the line.
+ `-n NCHARS'
+ `read' returns after reading NCHARS characters rather than
+ waiting for a complete line of input.
+
+ `-p PROMPT'
+ Display PROMPT, without a trailing newline, before attempting
+ to read any input. The prompt is displayed only if input is
+ coming from a terminal.
+
+ `-r'
+ If this option is given, backslash does not act as an escape
+ character. The backslash is considered to be part of the
+ line. In particular, a backslash-newline pair may not be
+ used as a line continuation.
+
+ `-s'
+ Silent mode. If input is coming from a terminal, characters
+ are not echoed.
+
+ `-t TIMEOUT'
+ Cause `read' to time out and return failure if a complete
+ line of input is not read within TIMEOUT seconds. This
+ option has no effect if `read' is not reading input from the
+ terminal or a pipe.
+
`shopt'
shopt [-pqsu] [-o] [OPTNAME ...]
Toggle the values of variables controlling optional shell behavior.
@@ -3242,8 +2827,8 @@ been extended in Bash.
fails.
`expand_aliases'
- If set, aliases are expanded as described below< under Aliases
- (*note Aliases::.). This option is enabled by default for
+ If set, aliases are expanded as described below under Aliases,
+ *Note Aliases::. This option is enabled by default for
interactive shells.
`extglob'
@@ -3290,6 +2875,11 @@ been extended in Bash.
accessed since the last time it was checked, the message
`"The mail in MAILFILE has been read"' is displayed.
+ `no_empty_cmd_completion'
+ If set, and Readline is being used, Bash will not attempt to
+ search the `PATH' for possible completions when completion is
+ attempted on an empty line.
+
`nocaseglob'
If set, Bash matches filenames in a case-insensitive fashion
when performing filename expansion.
@@ -3298,6 +2888,11 @@ been extended in Bash.
If set, Bash allows filename patterns which match no files to
expand to a null string, rather than themselves.
+ `progcomp'
+ If set, the programmable completion facilities (*note
+ Programmable Completion::.) are enabled. This option is
+ enabled by default.
+
`promptvars'
If set, prompt strings undergo variable and parameter
expansion after being expanded (*note Printing a Prompt::.).
@@ -3320,6 +2915,10 @@ been extended in Bash.
the directory containing the file supplied as an argument.
This option is enabled by default.
+ `xpg_echo'
+ If set, the `echo' builtin expands backslash-escape sequences
+ by default.
+
The return status when listing options is zero if all OPTNAMES are
enabled, non-zero otherwise. When setting or unsetting options,
the return status is zero unless an OPTNAME is not a valid shell
@@ -3417,8 +3016,14 @@ been extended in Bash.
non-numeric argument other than `unlimited' is supplied as a
LIMIT, or an error occurs while setting a new limit.
+`unalias'
+ unalias [-a] [NAME ... ]
+
+ Remove each NAME from the list of aliases. If `-a' is supplied,
+ all aliases are removed. Aliases are described in *Note Aliases::.
+

-File: bashref.info, Node: The Set Builtin, Next: Bash Conditional Expressions, Prev: Bash Builtins, Up: Bash Features
+File: bashref.info, Node: The Set Builtin, Next: Special Builtins, Prev: Bash Builtins, Up: Shell Builtin Commands
The Set Builtin
===============
@@ -3631,127 +3236,104 @@ The Set Builtin
supplied.

-File: bashref.info, Node: Bash Conditional Expressions, Next: Bash Variables, Prev: The Set Builtin, Up: Bash Features
+File: bashref.info, Node: Special Builtins, Prev: The Set Builtin, Up: Shell Builtin Commands
-Bash Conditional Expressions
-============================
-
- Conditional expressions are used by the `[[' compound command and
-the `test' and `[' builtin commands.
-
- Expressions may be unary or binary. Unary expressions are often
-used to examine the status of a file. There are string operators and
-numeric comparison operators as well. If any FILE argument to one of
-the primaries is of the form `/dev/fd/N', then file descriptor N is
-checked.
-
-`-a FILE'
- True if FILE exists.
-
-`-b FILE'
- True if FILE exists and is a block special file.
-
-`-c FILE'
- True if FILE exists and is a character special file.
-
-`-d FILE'
- True if FILE exists and is a directory.
-
-`-e FILE'
- True if FILE exists.
-
-`-f FILE'
- True if FILE exists and is a regular file.
-
-`-g FILE'
- True if FILE exists and its set-group-id bit is set.
-
-`-h FILE'
- True if FILE exists and is a symbolic link.
+Special Builtins
+================
-`-k FILE'
- True if FILE exists and its "sticky" bit is set.
+ For historical reasons, the POSIX 1003.2 standard has classified
+several builtin commands as *special*. When Bash is executing in POSIX
+mode, the special builtins differ from other builtin commands in three
+respects:
-`-p FILE'
- True if FILE exists and is a named pipe (FIFO).
+ 1. Special builtins are found before shell functions during command
+ lookup.
-`-r FILE'
- True if FILE exists and is readable.
+ 2. If a special builtin returns an error status, a non-interactive
+ shell exits.
-`-s FILE'
- True if FILE exists and has a size greater than zero.
+ 3. Assignment statements preceding the command stay in effect in the
+ shell environment after the command completes.
-`-t FD'
- True if file descriptor FD is open and refers to a terminal.
+ When Bash is not executing in POSIX mode, these builtins behave no
+differently than the rest of the Bash builtin commands. The Bash POSIX
+mode is described in *Note Bash POSIX Mode::.
-`-u FILE'
- True if FILE exists and its set-user-id bit is set.
+ These are the POSIX special builtins:
+ break : . continue eval exec exit export readonly return set
+ shift trap unset
-`-w FILE'
- True if FILE exists and is writable.
+
+File: bashref.info, Node: Shell Variables, Next: Bash Features, Prev: Shell Builtin Commands, Up: Top
-`-x FILE'
- True if FILE exists and is executable.
+Shell Variables
+***************
-`-O FILE'
- True if FILE exists and is owned by the effective user id.
+* Menu:
-`-G FILE'
- True if FILE exists and is owned by the effective group id.
+* Bourne Shell Variables:: Variables which Bash uses in the same way
+ as the Bourne Shell.
+* Bash Variables:: List of variables that exist in Bash.
-`-L FILE'
- True if FILE exists and is a symbolic link.
+ This chapter describes the shell variables that Bash uses. Bash
+automatically assigns default values to a number of variables.
-`-S FILE'
- True if FILE exists and is a socket.
+
+File: bashref.info, Node: Bourne Shell Variables, Next: Bash Variables, Up: Shell Variables
-`-N FILE'
- True if FILE exists and has been modified since it was last read.
+Bourne Shell Variables
+======================
-`FILE1 -nt FILE2'
- True if FILE1 is newer (according to modification date) than FILE2.
+ Bash uses certain shell variables in the same way as the Bourne
+shell. In some cases, Bash assigns a default value to the variable.
-`FILE1 -ot FILE2'
- True if FILE1 is older than FILE2.
+`CDPATH'
+ A colon-separated list of directories used as a search path for
+ the `cd' builtin command.
-`FILE1 -ef FILE2'
- True if FILE1 and FILE2 have the same device and inode numbers.
+`HOME'
+ The current user's home directory; the default for the `cd' builtin
+ command. The value of this variable is also used by tilde
+ expansion (*note Tilde Expansion::.).
-`-o OPTNAME'
- True if shell option OPTNAME is enabled. The list of options
- appears in the description of the `-o' option to the `set' builtin
- (*note The Set Builtin::.).
+`IFS'
+ A list of characters that separate fields; used when the shell
+ splits words as part of expansion.
-`-z STRING'
- True if the length of STRING is zero.
+`MAIL'
+ If this parameter is set to a filename and the `MAILPATH' variable
+ is not set, Bash informs the user of the arrival of mail in the
+ specified file.
-`-n STRING'
-`STRING'
- True if the length of STRING is non-zero.
+`MAILPATH'
+ A colon-separated list of filenames which the shell periodically
+ checks for new mail. Each list entry can specify the message that
+ is printed when new mail arrives in the mail file by separating
+ the file name from the message with a `?'. When used in the text
+ of the message, `$_' expands to the name of the current mail file.
-`STRING1 == STRING2'
- True if the strings are equal. `=' may be used in place of `=='.
+`OPTARG'
+ The value of the last option argument processed by the `getopts'
+ builtin.
-`STRING1 != STRING2'
- True if the strings are not equal.
+`OPTIND'
+ The index of the last option argument processed by the `getopts'
+ builtin.
-`STRING1 < STRING2'
- True if STRING1 sorts before STRING2 lexicographically in the
- current locale.
+`PATH'
+ A colon-separated list of directories in which the shell looks for
+ commands.
-`STRING1 > STRING2'
- True if STRING1 sorts after STRING2 lexicographically in the
- current locale.
+`PS1'
+ The primary prompt string. The default value is `\s-\v\$ '.
+ *Note Printing a Prompt::, for the complete list of escape
+ sequences that are expanded before `PS1' is displayed.
-`ARG1 OP ARG2'
- `OP' is one of `-eq', `-ne', `-lt', `-le', `-gt', or `-ge'. These
- arithmetic binary operators return true if ARG1 is equal to, not
- equal to, less than, less than or equal to, greater than, or
- greater than or equal to ARG2, respectively. ARG1 and ARG2 may be
- positive or negative integers.
+`PS2'
+ The secondary prompt string. The default value is `> '.

-File: bashref.info, Node: Bash Variables, Next: Shell Arithmetic, Prev: Bash Conditional Expressions, Up: Bash Features
+File: bashref.info, Node: Bash Variables, Prev: Bourne Shell Variables, Up: Shell Variables
Bash Variables
==============
@@ -3759,6 +3341,10 @@ Bash Variables
These variables are set or used by Bash, but other shells do not
normally treat them specially.
+ A few variables used by Bash are described in different chapters:
+variables for controlling the job control facilities (*note Job Control
+Variables::.).
+
`BASH'
The full pathname used to execute the current instance of Bash.
@@ -3772,9 +3358,9 @@ normally treat them specially.
The version number of the current instance of Bash.
`BASH_VERSINFO'
- A readonly array variable whose members hold version information
- for this instance of Bash. The values assigned to the array
- members are as follows:
+ A readonly array variable (*note Arrays::.) whose members hold
+ version information for this instance of Bash. The values
+ assigned to the array members are as follows:
`BASH_VERSINFO[0]'
The major version number (the RELEASE).
@@ -3794,16 +3380,45 @@ normally treat them specially.
`BASH_VERSINFO[5]'
The value of `MACHTYPE'.
+`COMP_WORDS'
+ An array variable consisting of the individual words in the
+ current command line. This variable is available only in shell
+ functions invoked by the programmable completion facilities (*note
+ Programmable Completion::.).
+
+`COMP_CWORD'
+ An index into `${COMP_WORDS}' of the word containing the current
+ cursor position. This variable is available only in shell
+ functions invoked by the programmable completion facilities (*note
+ Programmable Completion::.).
+
+`COMP_LINE'
+ The current command line. This variable is available only in
+ shell functions and external commands invoked by the programmable
+ completion facilities (*note Programmable Completion::.).
+
+`COMP_POINT'
+ The index of the current cursor position relative to the beginning
+ of the current command. If the current cursor position is at the
+ end of the current command, the value of this variable is equal to
+ `${#COMP_LINE}'. This variable is available only in shell
+ functions and external commands invoked by the programmable
+ completion facilities (*note Programmable Completion::.).
+
+`COMPREPLY'
+ An array variable from which Bash reads the possible completions
+ generated by a shell function invoked by the programmable
+ completion facility (*note Programmable Completion::.).
+
`DIRSTACK'
- An array variable (*note Arrays::.) containing the current
- contents of the directory stack. Directories appear in the stack
- in the order they are displayed by the `dirs' builtin. Assigning
- to members of this array variable may be used to modify
- directories already in the stack, but the `pushd' and `popd'
- builtins must be used to add and remove directories. Assignment
- to this variable will not change the current directory. If
- `DIRSTACK' is unset, it loses its special properties, even if it
- is subsequently reset.
+ An array variable containing the current contents of the directory
+ stack. Directories appear in the stack in the order they are
+ displayed by the `dirs' builtin. Assigning to members of this
+ array variable may be used to modify directories already in the
+ stack, but the `pushd' and `popd' builtins must be used to add and
+ remove directories. Assignment to this variable will not change
+ the current directory. If `DIRSTACK' is unset, it loses its
+ special properties, even if it is subsequently reset.
`EUID'
The numeric effective user id of the current user. This variable
@@ -3827,13 +3442,15 @@ normally treat them specially.
`GROUPS'
An array variable containing the list of groups of which the
- current user is a member. This variable is readonly.
+ current user is a member. Assignments to `GROUPS' have no effect
+ and are silently discarded. If `GROUPS' is unset, it loses its
+ special properties, even if it is subsequently reset.
`histchars'
Up to three characters which control history expansion, quick
substitution, and tokenization (*note History Interaction::.).
- The first character is the "history-expansion-char", that is, the
- character which signifies the start of a history expansion,
+ The first character is the HISTORY EXPANSION character, that is,
+ the character which signifies the start of a history expansion,
normally `!'. The second character is the character which
signifies `quick substitution' when seen as the first character on
a line, normally `^'. The optional third character is the
@@ -3849,25 +3466,32 @@ normally treat them specially.
command. If `HISTCMD' is unset, it loses its special properties,
even if it is subsequently reset.
+`FUNCNAME'
+ The name of any currently-executing shell function. This variable
+ exists only when a shell function is executing. Assignments to
+ `FUNCNAME' have no effect and are silently discarded. If
+ `FUNCNAME' is unset, it loses its special properties, even if it
+ is subsequently reset.
+
`HISTCONTROL'
- Set to a value of `ignorespace', it means don't enter lines which
- begin with a space or tab into the history list. Set to a value
- of `ignoredups', it means don't enter lines which match the last
- entered line. A value of `ignoreboth' combines the two options.
- Unset, or set to any other value than those above, means to save
- all lines on the history list. The second and subsequent lines of
- a multi-line compound command are not tested, and are added to the
- history regardless of the value of `HISTCONTROL'.
+ A value of `ignorespace' means to not enter lines which begin with
+ a space or tab into the history list. A value of `ignoredups'
+ means to not enter lines which match the last entered line. A
+ value of `ignoreboth' combines the two options. Unset, or set to
+ any other value than those above, means to save all lines on the
+ history list. The second and subsequent lines of a multi-line
+ compound command are not tested, and are added to the history
+ regardless of the value of `HISTCONTROL'.
`HISTIGNORE'
A colon-separated list of patterns used to decide which command
lines should be saved on the history list. Each pattern is
- anchored at the beginning of the line and must fully specify the
+ anchored at the beginning of the line and must match the complete
line (no implicit `*' is appended). Each pattern is tested
against the line after the checks specified by `HISTCONTROL' are
applied. In addition to the normal shell pattern matching
characters, `&' matches the previous history line. `&' may be
- escaped using a backslash. The backslash is removed before
+ escaped using a backslash; the backslash is removed before
attempting a match. The second and subsequent lines of a
multi-line compound command are not tested, and are added to the
history regardless of the value of `HISTIGNORE'.
@@ -3880,7 +3504,7 @@ normally treat them specially.
`HISTFILE'
The name of the file to which the command history is saved. The
- default is `~/.bash_history'.
+ default value is `~/.bash_history'.
`HISTSIZE'
The maximum number of commands to remember on the history list.
@@ -3890,15 +3514,19 @@ normally treat them specially.
The maximum number of lines contained in the history file. When
this variable is assigned a value, the history file is truncated,
if necessary, to contain no more than that number of lines. The
- default value is 500. The history file is also truncated to this
- size after writing it when an interactive shell exits.
+ history file is also truncated to this size after writing it when
+ an interactive shell exits. The default value is 500.
`HOSTFILE'
Contains the name of a file in the same format as `/etc/hosts' that
- should be read when the shell needs to complete a hostname. You
- can change the file interactively; the next time you attempt to
- complete a hostname, Bash will add the contents of the new file to
- the already existing database.
+ should be read when the shell needs to complete a hostname. The
+ list of possible hostname completions may be changed while the
+ shell is running; the next time hostname completion is attempted
+ after the value is changed, Bash adds the contents of the new file
+ to the existing list. If `HOSTFILE' is set, but has no value,
+ Bash attempts to read `/etc/hosts' to obtain the list of possible
+ hostname completions. When `HOSTFILE' is unset, the hostname list
+ is cleared.
`HOSTNAME'
The name of the current host.
@@ -3917,8 +3545,8 @@ normally treat them specially.
in effect for interactive shells.
`INPUTRC'
- The name of the Readline startup file, overriding the default of
- `~/.inputrc'.
+ The name of the Readline initialization file, overriding the
+ default of `~/.inputrc'.
`LANG'
Used to determine the locale category for any category not
@@ -3944,6 +3572,10 @@ normally treat them specially.
This variable determines the locale used to translate double-quoted
strings preceded by a `$' (*note Locale Translation::.).
+`LC_NUMERIC'
+ This variable determines the locale category used for number
+ formatting.
+
`LINENO'
The line number in the script or shell function currently
executing.
@@ -3967,17 +3599,17 @@ normally treat them specially.
A string describing the operating system Bash is running on.
`PIPESTATUS'
- An array variable (*note Arrays::.) containing a list of exit
+ An array variable (*note Arrays::.) containing a list of exit
status values from the processes in the most-recently-executed
foreground pipeline (which may contain only a single command).
`PPID'
- The process id of the shell's parent process. This variable is
+ The process ID of the shell's parent process. This variable is
readonly.
`PROMPT_COMMAND'
- If present, this contains a string which is a command to execute
- before the printing of each primary prompt (`$PS1').
+ If set, the value is interpreted as a command to execute before
+ the printing of each primary prompt (`$PS1').
`PS3'
The value of this variable is used as the prompt for the `select'
@@ -3985,8 +3617,8 @@ normally treat them specially.
prompts with `#? '
`PS4'
- This is the prompt printed before the command line is echoed when
- the `-x' option is set (*note The Set Builtin::.). The first
+ The value is the prompt printed before the command line is echoed
+ when the `-x' option is set (*note The Set Builtin::.). The first
character of `PS4' is replicated multiple times, as necessary, to
indicate multiple levels of indirection. The default is `+ '.
@@ -4062,15 +3694,525 @@ normally treat them specially.
`TMOUT'
If set to a value greater than zero, the value is interpreted as
the number of seconds to wait for input after issuing the primary
- prompt. Bash terminates after that number of seconds if input does
- not arrive.
+ prompt when the shell is interactive. Bash terminates after that
+ number of seconds if input does not arrive.
`UID'
The numeric real user id of the current user. This variable is
readonly.

-File: bashref.info, Node: Shell Arithmetic, Next: Aliases, Prev: Bash Variables, Up: Bash Features
+File: bashref.info, Node: Bash Features, Next: Job Control, Prev: Shell Variables, Up: Top
+
+Bash Features
+*************
+
+ This section describes features unique to Bash.
+
+* Menu:
+
+* Invoking Bash:: Command line options that you can give
+ to Bash.
+* Bash Startup Files:: When and how Bash executes scripts.
+* Interactive Shells:: What an interactive shell is.
+* Bash Conditional Expressions:: Primitives used in composing expressions for
+ the `test' builtin.
+* Shell Arithmetic:: Arithmetic on shell variables.
+* Aliases:: Substituting one command for another.
+* Arrays:: Array Variables.
+* The Directory Stack:: History of visited directories.
+* Printing a Prompt:: Controlling the PS1 string.
+* The Restricted Shell:: A more controlled mode of shell execution.
+* Bash POSIX Mode:: Making Bash behave more closely to what
+ the POSIX standard specifies.
+
+
+File: bashref.info, Node: Invoking Bash, Next: Bash Startup Files, Up: Bash Features
+
+Invoking Bash
+=============
+
+ bash [long-opt] [-ir] [-abefhkmnptuvxdBCDHP] [-o OPTION] [ARGUMENT ...]
+ bash [long-opt] [-abefhkmnptuvxdBCDHP] [-o OPTION] -c STRING [ARGUMENT ...]
+ bash [long-opt] -s [-abefhkmnptuvxdBCDHP] [-o OPTION] [ARGUMENT ...]
+
+ In addition to the single-character shell command-line options
+(*note The Set Builtin::.), there are several multi-character options
+that you can use. These options must appear on the command line before
+the single-character options in order for them to be recognized.
+
+`--dump-po-strings'
+ A list of all double-quoted strings preceded by `$' is printed on
+ the standard ouput in the GNU `gettext' PO (portable object) file
+ format. Equivalent to `-D' except for the output format.
+
+`--dump-strings'
+ Equivalent to `-D'.
+
+`--help'
+ Display a usage message on standard output and exit sucessfully.
+
+`--login'
+ Make this shell act as if it were directly invoked by login. This
+ is equivalent to `exec -l bash' but can be issued from another
+ shell, such as `csh'. `exec bash --login' will replace the
+ current shell with a Bash login shell. *Note Bash Startup
+ Files::, for a description of the special behavior of a login
+ shell.
+
+`--noediting'
+ Do not use the GNU Readline library (*note Command Line Editing::.)
+ to read command lines when the shell is interactive.
+
+`--noprofile'
+ Don't load the system-wide startup file `/etc/profile' or any of
+ the personal initialization files `~/.bash_profile',
+ `~/.bash_login', or `~/.profile' when Bash is invoked as a login
+ shell.
+
+`--norc'
+ Don't read the `~/.bashrc' initialization file in an interactive
+ shell. This is on by default if the shell is invoked as `sh'.
+
+`--posix'
+ Change the behavior of Bash where the default operation differs
+ from the POSIX 1003.2 standard to match the standard. This is
+ intended to make Bash behave as a strict superset of that
+ standard. *Note Bash POSIX Mode::, for a description of the Bash
+ POSIX mode.
+
+`--rcfile FILENAME'
+ Execute commands from FILENAME (instead of `~/.bashrc') in an
+ interactive shell.
+
+`--restricted'
+ Make the shell a restricted shell (*note The Restricted Shell::.).
+
+`--verbose'
+ Equivalent to `-v'. Print shell input lines as they're read.
+
+`--version'
+ Show version information for this instance of Bash on the standard
+ output and exit successfully.
+
+ There are several single-character options that may be supplied at
+invocation which are not available with the `set' builtin.
+
+`-c STRING'
+ Read and execute commands from STRING after processing the
+ options, then exit. Any remaining arguments are assigned to the
+ positional parameters, starting with `$0'.
+
+`-i'
+ Force the shell to run interactively. Interactive shells are
+ described in *Note Interactive Shells::.
+
+`-r'
+ Make the shell a restricted shell (*note The Restricted Shell::.).
+
+`-s'
+ If this option is present, or if no arguments remain after option
+ processing, then commands are read from the standard input. This
+ option allows the positional parameters to be set when invoking an
+ interactive shell.
+
+`-D'
+ A list of all double-quoted strings preceded by `$' is printed on
+ the standard ouput. These are the strings that are subject to
+ language translation when the current locale is not `C' or `POSIX'
+ (*note Locale Translation::.). This implies the `-n' option; no
+ commands will be executed.
+
+`--'
+ A `--' signals the end of options and disables further option
+ processing. Any arguments after the `--' are treated as filenames
+ and arguments.
+
+ An *interactive* shell is one started without non-option arguments,
+unless `-s' is specified, without specifying the `-c' option, and whose
+input and output are both connected to terminals (as determined by
+`isatty(3)'), or one started with the `-i' option. *Note Interactive
+Shells:: for more information.
+
+ If arguments remain after option processing, and neither the `-c'
+nor the `-s' option has been supplied, the first argument is assumed to
+be the name of a file containing shell commands (*note Shell
+Scripts::.). When Bash is invoked in this fashion, `$0' is set to the
+name of the file, and the positional parameters are set to the
+remaining arguments. Bash reads and executes commands from this file,
+then exits. Bash's exit status is the exit status of the last command
+executed in the script. If no commands are executed, the exit status
+is 0.
+
+
+File: bashref.info, Node: Bash Startup Files, Next: Interactive Shells, Prev: Invoking Bash, Up: Bash Features
+
+Bash Startup Files
+==================
+
+ This section describs how Bash executes its startup files. If any
+of the files exist but cannot be read, Bash reports an error. Tildes
+are expanded in file names as described above under Tilde Expansion
+(*note Tilde Expansion::.).
+
+ Interactive shells are described in *Note Interactive Shells::.
+
+Invoked as an interactive login shell, or with `--login'
+........................................................
+
+ When Bash is invoked as an interactive login shell, or as a
+non-interactive shell with the `--login' option, it first reads and
+executes commands from the file `/etc/profile', if that file exists.
+After reading that file, it looks for `~/.bash_profile',
+`~/.bash_login', and `~/.profile', in that order, and reads and
+executes commands from the first one that exists and is readable. The
+`--noprofile' option may be used when the shell is started to inhibit
+this behavior.
+
+ When a login shell exits, Bash reads and executes commands from the
+file `~/.bash_logout', if it exists.
+
+Invoked as an interactive non-login shell
+.........................................
+
+ When an interactive shell that is not a login shell is started, Bash
+reads and executes commands from `~/.bashrc', if that file exists.
+This may be inhibited by using the `--norc' option. The `--rcfile
+FILE' option will force Bash to read and execute commands from FILE
+instead of `~/.bashrc'.
+
+ So, typically, your `~/.bash_profile' contains the line
+ `if [ -f ~/.bashrc ]; then . ~/.bashrc; fi'
+
+after (or before) any login-specific initializations.
+
+Invoked non-interactively
+.........................
+
+ When Bash is started non-interactively, to run a shell script, for
+example, it looks for the variable `BASH_ENV' in the environment,
+expands its value if it appears there, and uses the expanded value as
+the name of a file to read and execute. Bash behaves as if the
+following command were executed:
+ `if [ -n "$BASH_ENV" ]; then . "$BASH_ENV"; fi'
+
+but the value of the `PATH' variable is not used to search for the file
+name.
+
+Invoked with name `sh'
+......................
+
+ If Bash is invoked with the name `sh', it tries to mimic the startup
+behavior of historical versions of `sh' as closely as possible, while
+conforming to the POSIX standard as well.
+
+ When invoked as an interactive login shell, or as a non-interactive
+shell with the `--login' option, it first attempts to read and execute
+commands from `/etc/profile' and `~/.profile', in that order. The
+`--noprofile' option may be used to inhibit this behavior. When
+invoked as an interactive shell with the name `sh', Bash looks for the
+variable `ENV', expands its value if it is defined, and uses the
+expanded value as the name of a file to read and execute. Since a
+shell invoked as `sh' does not attempt to read and execute commands
+from any other startup files, the `--rcfile' option has no effect. A
+non-interactive shell invoked with the name `sh' does not attempt to
+read any other startup files.
+
+ When invoked as `sh', Bash enters POSIX mode after the startup files
+are read.
+
+Invoked in POSIX mode
+.....................
+
+ When Bash is started in POSIX mode, as with the `--posix' command
+line option, it follows the POSIX standard for startup files. In this
+mode, interactive shells expand the `ENV' variable and commands are
+read and executed from the file whose name is the expanded value. No
+other startup files are read.
+
+Invoked by remote shell daemon
+..............................
+
+ Bash attempts to determine when it is being run by the remote shell
+daemon, usually `rshd'. If Bash determines it is being run by rshd, it
+reads and executes commands from `~/.bashrc', if that file exists and
+is readable. It will not do this if invoked as `sh'. The `--norc'
+option may be used to inhibit this behavior, and the `--rcfile' option
+may be used to force another file to be read, but `rshd' does not
+generally invoke the shell with those options or allow them to be
+specified.
+
+Invoked with unequal effective and real UID/GIDs
+................................................
+
+ If Bash is started with the effective user (group) id not equal to
+the real user (group) id, and the `-p' option is not supplied, no
+startup files are read, shell functions are not inherited from the
+environment, the `SHELLOPTS' variable, if it appears in the
+environment, is ignored, and the effective user id is set to the real
+user id. If the `-p' option is supplied at invocation, the startup
+behavior is the same, but the effective user id is not reset.
+
+
+File: bashref.info, Node: Interactive Shells, Next: Bash Conditional Expressions, Prev: Bash Startup Files, Up: Bash Features
+
+Interactive Shells
+==================
+
+* Menu:
+
+* What is an Interactive Shell?:: What determines whether a shell is Interactive.
+* Is this Shell Interactive?:: How to tell if a shell is interactive.
+* Interactive Shell Behavior:: What changes in a interactive shell?
+
+
+File: bashref.info, Node: What is an Interactive Shell?, Next: Is this Shell Interactive?, Up: Interactive Shells
+
+What is an Interactive Shell?
+-----------------------------
+
+ An interactive shell is one started without non-option arguments,
+unless `-s' is specified, without specifiying the `-c' option, and
+whose input and output are both connected to terminals (as determined
+by `isatty(3)'), or one started with the `-i' option.
+
+ An interactive shell generally reads from and writes to a user's
+terminal.
+
+ The `-s' invocation option may be used to set the positional
+parameters when an interactive shell is started.
+
+
+File: bashref.info, Node: Is this Shell Interactive?, Next: Interactive Shell Behavior, Prev: What is an Interactive Shell?, Up: Interactive Shells
+
+Is this Shell Interactive?
+--------------------------
+
+ To determine within a startup script whether or not Bash is running
+interactively, test the value of the `-' special parameter. It
+contains `i' when the shell is interactive. For example:
+
+ case "$-" in
+ *i*) echo This shell is interactive ;;
+ *) echo This shell is not interactive ;;
+ esac
+
+ Alternatively, startup scripts may examine the variable `$PS1'; it
+is unset in non-interactive shells, and set in interactive shells.
+Thus:
+
+ if [ -z "$PS1" ]; then
+ echo This shell is not interactive
+ else
+ echo This shell is interactive
+ fi
+
+
+File: bashref.info, Node: Interactive Shell Behavior, Prev: Is this Shell Interactive?, Up: Interactive Shells
+
+Interactive Shell Behavior
+--------------------------
+
+ When the shell is running interactively, it changes its behavior in
+several ways.
+
+ 1. Startup files are read and executed as described in *Note Bash
+ Startup Files::.
+
+ 2. Job Control (*note Job Control::.) is enabled by default. When job
+ control is in effect, Bash ignores the keyboard-generated job
+ control signals `SIGTTIN', `SIGTTOU', and `SIGTSTP'.
+
+ 3. Bash expands and displays `$PS1' before reading the first line of
+ a command, and expands and displays `$PS2' before reading the
+ second and subsequent lines of a multi-line command.
+
+ 4. Bash executes the value of the `PROMPT_COMMAND' variable as a
+ command before printing the primary prompt, `$PS1' (*note Bash
+ Variables::.).
+
+ 5. Readline (*note Command Line Editing::.) is used to read commands
+ from the user's terminal.
+
+ 6. Bash inspects the value of the `ignoreeof' option to `set -o'
+ instead of exiting immediately when it receives an `EOF' on its
+ standard input when reading a command (*note The Set Builtin::.).
+
+ 7. Command history (*note Bash History Facilities::.) and history
+ expansion (*note History Interaction::.) are enabled by default.
+ Bash will save the command history to the file named by `$HISTFILE'
+ when an interactive shell exits.
+
+ 8. Alias expansion (*note Aliases::.) is performed by default.
+
+ 9. In the absence of any traps, Bash ignores `SIGTERM' (*note
+ Signals::.).
+
+ 10. In the absence of any traps, `SIGINT' is caught and handled
+ ((*note Signals::.). `SIGINT' will interrupt some shell builtins.
+
+ 11. An interactive login shell sends a `SIGHUP' to all jobs on exit if
+ the `hupoxexit' shell option has been enabled (*note Signals::.).
+
+ 12. The `-n' invocation option is ignored, and `set -n' has no effect
+ (*note The Set Builtin::.).
+
+ 13. Bash will check for mail periodically, depending on the values of
+ the `MAIL', `MAILPATH', and `MAILCHECK' shell variables (*note
+ Bash Variables::.).
+
+ 14. Expansion errors due to references to unbound shell variables after
+ `set -u' has been enabled will not cause the shell to exit (*note
+ The Set Builtin::.).
+
+ 15. The shell will not exit on expansion errors caused by VAR being
+ unset or null in `${VAR:?WORD}' expansions (*note Shell Parameter
+ Expansion::.).
+
+ 16. Redirection errors encountered by shell builtins will not cause the
+ shell to exit.
+
+ 17. When running in POSIX mode, a special builtin returning an error
+ status will not cause the shell to exit (*note Bash POSIX Mode::.).
+
+ 18. A failed `exec' will not cause the shell to exit (*note Bourne
+ Shell Builtins::.).
+
+ 19. Parser syntax errors will not cause the shell to exit.
+
+ 20. Simple spelling correction for directory arguments to the `cd'
+ builtin is enabled by default (see the description of the `cdspell'
+ option to the `shopt' builtin in *Note Bash Builtins::).
+
+ 21. The shell will check the value of the `TMOUT' variable and exit if
+ a command is not read within the specified number of seconds after
+ printing `$PS1' (*note Bash Variables::.).
+
+
+
+File: bashref.info, Node: Bash Conditional Expressions, Next: Shell Arithmetic, Prev: Interactive Shells, Up: Bash Features
+
+Bash Conditional Expressions
+============================
+
+ Conditional expressions are used by the `[[' compound command and
+the `test' and `[' builtin commands.
+
+ Expressions may be unary or binary. Unary expressions are often
+used to examine the status of a file. There are string operators and
+numeric comparison operators as well. If the FILE argument to one of
+the primaries is of the form `/dev/fd/N', then file descriptor N is
+checked. If the FILE argument to one of the primaries is one of
+`/dev/stdin', `/dev/stdout', or `/dev/stderr', file descriptor 0, 1, or
+2, respectively, is checked.
+
+`-a FILE'
+ True if FILE exists.
+
+`-b FILE'
+ True if FILE exists and is a block special file.
+
+`-c FILE'
+ True if FILE exists and is a character special file.
+
+`-d FILE'
+ True if FILE exists and is a directory.
+
+`-e FILE'
+ True if FILE exists.
+
+`-f FILE'
+ True if FILE exists and is a regular file.
+
+`-g FILE'
+ True if FILE exists and its set-group-id bit is set.
+
+`-h FILE'
+ True if FILE exists and is a symbolic link.
+
+`-k FILE'
+ True if FILE exists and its "sticky" bit is set.
+
+`-p FILE'
+ True if FILE exists and is a named pipe (FIFO).
+
+`-r FILE'
+ True if FILE exists and is readable.
+
+`-s FILE'
+ True if FILE exists and has a size greater than zero.
+
+`-t FD'
+ True if file descriptor FD is open and refers to a terminal.
+
+`-u FILE'
+ True if FILE exists and its set-user-id bit is set.
+
+`-w FILE'
+ True if FILE exists and is writable.
+
+`-x FILE'
+ True if FILE exists and is executable.
+
+`-O FILE'
+ True if FILE exists and is owned by the effective user id.
+
+`-G FILE'
+ True if FILE exists and is owned by the effective group id.
+
+`-L FILE'
+ True if FILE exists and is a symbolic link.
+
+`-S FILE'
+ True if FILE exists and is a socket.
+
+`-N FILE'
+ True if FILE exists and has been modified since it was last read.
+
+`FILE1 -nt FILE2'
+ True if FILE1 is newer (according to modification date) than FILE2.
+
+`FILE1 -ot FILE2'
+ True if FILE1 is older than FILE2.
+
+`FILE1 -ef FILE2'
+ True if FILE1 and FILE2 have the same device and inode numbers.
+
+`-o OPTNAME'
+ True if shell option OPTNAME is enabled. The list of options
+ appears in the description of the `-o' option to the `set' builtin
+ (*note The Set Builtin::.).
+
+`-z STRING'
+ True if the length of STRING is zero.
+
+`-n STRING'
+`STRING'
+ True if the length of STRING is non-zero.
+
+`STRING1 == STRING2'
+ True if the strings are equal. `=' may be used in place of `=='.
+
+`STRING1 != STRING2'
+ True if the strings are not equal.
+
+`STRING1 < STRING2'
+ True if STRING1 sorts before STRING2 lexicographically in the
+ current locale.
+
+`STRING1 > STRING2'
+ True if STRING1 sorts after STRING2 lexicographically in the
+ current locale.
+
+`ARG1 OP ARG2'
+ `OP' is one of `-eq', `-ne', `-lt', `-le', `-gt', or `-ge'. These
+ arithmetic binary operators return true if ARG1 is equal to, not
+ equal to, less than, less than or equal to, greater than, or
+ greater than or equal to ARG2, respectively. ARG1 and ARG2 may be
+ positive or negative integers.
+
+
+File: bashref.info, Node: Shell Arithmetic, Next: Aliases, Prev: Bash Conditional Expressions, Up: Bash Features
Shell Arithmetic
================
@@ -4079,9 +4221,17 @@ Shell Arithmetic
the shell expansions or by the `let' builtin.
Evaluation is done in long integers with no check for overflow,
-though division by 0 is trapped and flagged as an error. The following
-list of operators is grouped into levels of equal-precedence operators.
-The levels are listed in order of decreasing precedence.
+though division by 0 is trapped and flagged as an error. The operators
+and their precedence and associativity are the same as in the C
+language. The following list of operators is grouped into levels of
+equal-precedence operators. The levels are listed in order of
+decreasing precedence.
+
+`ID++ ID--'
+ variable post-increment and post-decrement
+
+`++ID --ID'
+ variable pre-increment and pre-decrement
`- +'
unary minus and plus
@@ -4128,20 +4278,24 @@ The levels are listed in order of decreasing precedence.
`= *= /= %= += -= <<= >>= &= ^= |='
assignment
+`expr1 , expr2'
+ comma
+
Shell variables are allowed as operands; parameter expansion is
-performed before the expression is evaluated. The value of a parameter
-is coerced to a long integer within an expression. A shell variable
-need not have its integer attribute turned on to be used in an
-expression.
+performed before the expression is evaluated. Within an expression,
+shell variables may also be referenced by name without using the
+parameter expansion syntax. The value of a variable is evaluated as an
+arithmetic expression when it is referenced. A shell variable need not
+have its integer attribute turned on to be used in an expression.
Constants with a leading 0 are interpreted as octal numbers. A
leading `0x' or `0X' denotes hexadecimal. Otherwise, numbers take the
form [BASE`#']N, where BASE is a decimal number between 2 and 64
representing the arithmetic base, and N is a number in that base. If
-BASE is omitted, then base 10 is used. The digits greater than 9 are
-represented by the lowercase letters, the uppercase letters, `_', and
-`@', in that order. If BASE is less than or equal to 36, lowercase and
-uppercase letters may be used interchangably to represent numbers
+BASE`#' is omitted, then base 10 is used. The digits greater than 9
+are represented by the lowercase letters, the uppercase letters, `_',
+and `@', in that order. If BASE is less than or equal to 36, lowercase
+and uppercase letters may be used interchangably to represent numbers
between 10 and 35.
Operators are evaluated in order of precedence. Sub-expressions in
@@ -4154,13 +4308,9 @@ File: bashref.info, Node: Aliases, Next: Arrays, Prev: Shell Arithmetic, Up:
Aliases
=======
-* Menu:
-
-* Alias Builtins:: Builtins commands to maniuplate aliases.
-
- Aliases allow a string to be substituted for a word when it is used
+ ALIASES allow a string to be substituted for a word when it is used
as the first word of a simple command. The shell maintains a list of
-ALIASES that may be set and unset with the `alias' and `unalias'
+aliases that may be set and unset with the `alias' and `unalias'
builtin commands.
The first word of each simple command, if unquoted, is checked to see
@@ -4201,28 +4351,7 @@ not available until after that function is executed. To be safe,
always put alias definitions on a separate line, and do not use `alias'
in compound commands.
- For almost every purpose, aliases are superseded by shell functions.
-
-
-File: bashref.info, Node: Alias Builtins, Up: Aliases
-
-Alias Builtins
---------------
-
-`alias'
- alias [`-p'] [NAME[=VALUE] ...]
-
- Without arguments or with the `-p' option, `alias' prints the list
- of aliases on the standard output in a form that allows them to be
- reused as input. If arguments are supplied, an alias is defined
- for each NAME whose VALUE is given. If no VALUE is given, the name
- and value of the alias is printed.
-
-`unalias'
- unalias [-a] [NAME ... ]
-
- Remove each NAME from the list of aliases. If `-a' is supplied,
- all aliases are removed.
+ For almost every purpose, shell functions are preferred over aliases.

File: bashref.info, Node: Arrays, Next: The Directory Stack, Prev: Aliases, Up: Bash Features
@@ -4278,9 +4407,9 @@ is the number of elements in the array. Referencing an array variable
without a subscript is equivalent to referencing element zero.
The `unset' builtin is used to destroy arrays. `unset'
-`name[SUBSCRIPT]' destroys the array element at index SUBSCRIPT.
-`unset' NAME, where NAME is an array, removes the entire array. A
-subscript of `*' or `@' also removes the entire array.
+NAME[SUBSCRIPT] destroys the array element at index SUBSCRIPT. `unset'
+NAME, where NAME is an array, removes the entire array. A subscript of
+`*' or `@' also removes the entire array.
The `declare', `local', and `readonly' builtins each accept a `-a'
option to specify an array. The `read' builtin accepts a `-a' option
@@ -4295,6 +4424,11 @@ File: bashref.info, Node: The Directory Stack, Next: Printing a Prompt, Prev:
The Directory Stack
===================
+* Menu:
+
+* Directory Stack Builtins:: Bash builtin commands to manipulate
+ the directory stack.
+
The directory stack is a list of recently-visited directories. The
`pushd' builtin adds directories to the stack as it changes the current
directory, and the `popd' builtin removes specified directories from
@@ -4304,8 +4438,14 @@ The `dirs' builtin displays the contents of the directory stack.
The contents of the directory stack are also visible as the value of
the `DIRSTACK' shell variable.
+
+File: bashref.info, Node: Directory Stack Builtins, Up: The Directory Stack
+
+Directory Stack Builtins
+------------------------
+
`dirs'
- dirs [+N | -N] [-clvp]
+ dirs [+N | -N] [-clpv]
Display the list of currently remembered directories. Directories
are added to the list with the `pushd' command; the `popd' command
removes directories from the list.
@@ -4389,8 +4529,9 @@ Controlling the Prompt
======================
The value of the variable `PROMPT_COMMAND' is examined just before
-Bash prints each primary prompt. If it is set and non-null, then the
-value is executed just as if it had been typed on the command line.
+Bash prints each primary prompt. If `PROMPT_COMMAND' is set and has a
+non-null value, then the value is executed just as if it had been typed
+on the command line.
In addition, the following table describes the special characters
which can appear in the prompt variables:
@@ -4410,6 +4551,12 @@ which can appear in the prompt variables:
`\H'
The hostname.
+`\j'
+ The number of jobs currently managed by the shell.
+
+`\l'
+ The basename of the shell's terminal device name.
+
`\n'
A newline.
@@ -4466,6 +4613,16 @@ which can appear in the prompt variables:
`\]'
End a sequence of non-printing characters.
+ The command number and the history number are usually different: the
+history number of a command is its position in the history list, which
+may include commands restored from the history file (*note Bash History
+Facilities::.), while the command number is the position in the
+sequence of commands executed during the current shell session.
+
+ After the string is decoded, it is expanded via parameter expansion,
+command substitution, arithmetic expansion, and quote removal, subject
+to the value of the `promptvars' shell option (*note Bash Builtins::.).
+

File: bashref.info, Node: The Restricted Shell, Next: Bash POSIX Mode, Prev: Printing a Prompt, Up: Bash Features
@@ -4487,6 +4644,9 @@ with the exception that the following are disallowed:
* Specifying a filename containing a slash as an argument to the `.'
builtin command.
+ * Specifying a filename containing a slash as an argument to the `-p'
+ option to the `hash' builtin command.
+
* Importing function definitions from the shell environment at
startup.
@@ -4513,8 +4673,8 @@ Bash POSIX Mode
Starting Bash with the `--posix' command-line option or executing
`set -o posix' while Bash is running will cause Bash to conform more
-closely to the POSIX.2 standard by changing the behavior to match that
-specified by POSIX.2 in areas where the Bash default differs.
+closely to the POSIX 1003.2 standard by changing the behavior to match
+that specified by POSIX in areas where the Bash default differs.
The following list is what's changed when `POSIX mode' is in effect:
@@ -4529,7 +4689,7 @@ specified by POSIX.2 in areas where the Bash default differs.
4. Reserved words may not be aliased.
- 5. The POSIX.2 `PS1' and `PS2' expansions of `!' to the history
+ 5. The POSIX 1003.2 `PS1' and `PS2' expansions of `!' to the history
number and `!!' to `!' are enabled, and parameter expansion is
performed on the values of `PS1' and `PS2' regardless of the
setting of the `promptvars' option.
@@ -4537,8 +4697,8 @@ specified by POSIX.2 in areas where the Bash default differs.
6. Interactive comments are enabled by default. (Bash has them on by
default anyway.)
- 7. The POSIX.2 startup files are executed (`$ENV') rather than the
- normal Bash files.
+ 7. The POSIX 1003.2 startup files are executed (`$ENV') rather than
+ the normal Bash files.
8. Tilde expansion is only performed on assignments preceding a
command name, rather than on all assignment statements on the line.
@@ -4558,49 +4718,52 @@ specified by POSIX.2 in areas where the Bash default differs.
13. Redirection operators do not perform filename expansion on the word
in the redirection unless the shell is interactive.
- 14. Function names must be valid shell `name's. That is, they may not
+ 14. Redirection operators do not perform word splitting on the word in
+ the redirection.
+
+ 15. Function names must be valid shell `name's. That is, they may not
contain characters other than letters, digits, and underscores, and
may not start with a digit. Declaring a function with an invalid
name causes a fatal syntax error in non-interactive shells.
- 15. POSIX.2 `special' builtins are found before shell functions during
- command lookup.
+ 16. POSIX 1003.2 `special' builtins are found before shell functions
+ during command lookup.
- 16. If a POSIX.2 special builtin returns an error status, a
+ 17. If a POSIX 1003.2 special builtin returns an error status, a
non-interactive shell exits. The fatal errors are those listed in
the POSIX.2 standard, and include things like passing incorrect
options, redirection errors, variable assignment errors for
assignments preceding the command name, and so on.
- 17. If the `cd' builtin finds a directory to change to using
+ 18. If the `cd' builtin finds a directory to change to using
`$CDPATH', the value it assigns to the `PWD' variable does not
contain any symbolic links, as if `cd -P' had been executed.
- 18. If `$CDPATH' is set, the `cd' builtin will not implicitly append
+ 19. If `$CDPATH' is set, the `cd' builtin will not implicitly append
the current directory to it. This means that `cd' will fail if no
valid directory name can be constructed from any of the entries in
`$CDPATH', even if the a directory with the same name as the name
given as an argument to `cd' exists in the current directory.
- 19. A non-interactive shell exits with an error status if a variable
+ 20. A non-interactive shell exits with an error status if a variable
assignment error occurs when no command name follows the assignment
statements. A variable assignment error occurs, for example, when
trying to assign a value to a readonly variable.
- 20. A non-interactive shell exits with an error status if the iteration
+ 21. A non-interactive shell exits with an error status if the iteration
variable in a `for' statement or the selection variable in a
`select' statement is a readonly variable.
- 21. Process substitution is not available.
+ 22. Process substitution is not available.
- 22. Assignment statements preceding POSIX.2 special builtins persist
- in the shell environment after the builtin completes.
+ 23. Assignment statements preceding POSIX 1003.2 special builtins
+ persist in the shell environment after the builtin completes.
- 23. The `export' and `readonly' builtin commands display their output
- in the format required by POSIX.2.
+ 24. The `export' and `readonly' builtin commands display their output
+ in the format required by POSIX 1003.2.
- There is other POSIX.2 behavior that Bash does not implement.
+ There is other POSIX 1003.2 behavior that Bash does not implement.
Specifically:
1. Assignment statements affect the execution environment of all
@@ -4645,17 +4808,17 @@ the processes in a single pipeline are members of the same job. Bash
uses the JOB abstraction as the basis for job control.
To facilitate the implementation of the user interface to job
-control, the system maintains the notion of a current terminal process
-group ID. Members of this process group (processes whose process group
-ID is equal to the current terminal process group ID) receive
-keyboard-generated signals such as `SIGINT'. These processes are said
-to be in the foreground. Background processes are those whose process
-group ID differs from the terminal's; such processes are immune to
-keyboard-generated signals. Only foreground processes are allowed to
-read from or write to the terminal. Background processes which attempt
-to read from (write to) the terminal are sent a `SIGTTIN' (`SIGTTOU')
-signal by the terminal driver, which, unless caught, suspends the
-process.
+control, the operating system maintains the notion of a current terminal
+process group ID. Members of this process group (processes whose
+process group ID is equal to the current terminal process group ID)
+receive keyboard-generated signals such as `SIGINT'. These processes
+are said to be in the foreground. Background processes are those whose
+process group ID differs from the terminal's; such processes are immune
+to keyboard-generated signals. Only foreground processes are allowed
+to read from or write to the terminal. Background processes which
+attempt to read from (write to) the terminal are sent a `SIGTTIN'
+(`SIGTTOU') signal by the terminal driver, which, unless caught,
+suspends the process.
If the operating system on which Bash is running supports job
control, Bash contains facilities to use it. Typing the SUSPEND
@@ -4671,18 +4834,22 @@ the additional side effect of causing pending output and typeahead to
be discarded.
There are a number of ways to refer to a job in the shell. The
-character `%' introduces a job name. Job number `n' may be referred to
-as `%n'. A job may also be referred to using a prefix of the name used
-to start it, or using a substring that appears in its command line.
-For example, `%ce' refers to a stopped `ce' job. Using `%?ce', on the
-other hand, refers to any job containing the string `ce' in its command
-line. If the prefix or substring matches more than one job, Bash
-reports an error. The symbols `%%' and `%+' refer to the shell's
-notion of the current job, which is the last job stopped while it was
-in the foreground or started in the background. The previous job may
-be referenced using `%-'. In output pertaining to jobs (e.g., the
-output of the `jobs' command), the current job is always flagged with a
-`+', and the previous job with a `-'.
+character `%' introduces a job name.
+
+ Job number `n' may be referred to as `%n'. The symbols `%%' and
+`%+' refer to the shell's notion of the current job, which is the last
+job stopped while it was in the foreground or started in the
+background. The previous job may be referenced using `%-'. In output
+pertaining to jobs (e.g., the output of the `jobs' command), the
+current job is always flagged with a `+', and the previous job with a
+`-'.
+
+ A job may also be referred to using a prefix of the name used to
+start it, or using a substring that appears in its command line. For
+example, `%ce' refers to a stopped `ce' job. Using `%?ce', on the other
+hand, refers to any job containing the string `ce' in its command line.
+If the prefix or substring matches more than one job, Bash reports an
+error.
Simply naming a job can be used to bring it into the foreground:
`%1' is a synonym for `fg %1', bringing job 1 from the background into
@@ -4726,7 +4893,7 @@ Job Control Builtins
JOBSPEC specifies a job that was started without job control.
`jobs'
- jobs [-lpnrs] [JOBSPEC]
+ jobs [-lnprs] [JOBSPEC]
jobs -x COMMAND [ARGUMENTS]
The first form lists the active jobs. The options have the
@@ -4774,7 +4941,7 @@ Job Control Builtins
invalid option is encountered.
`wait'
- wait [JOBSPEC|PID]
+ wait [JOBSPEC or PID]
Wait until the child process specified by process ID PID or job
specification JOBSPEC exits and return the exit status of the last
command waited for. If a job spec is given, all processes in the
@@ -4827,336 +4994,14 @@ Job Control Variables
analogous to the `%' job ID.

-File: bashref.info, Node: Using History Interactively, Next: Command Line Editing, Prev: Job Control, Up: Top
-
-Using History Interactively
-***************************
-
- This chapter describes how to use the GNU History Library
-interactively, from a user's standpoint. It should be considered a
-user's guide. For information on using the GNU History Library in
-other programs, see the GNU Readline Library Manual.
-
-* Menu:
-
-* Bash History Facilities:: How Bash lets you manipulate your command
- history.
-* Bash History Builtins:: The Bash builtin commands that manipulate
- the command history.
-* History Interaction:: What it feels like using History as a user.
-
-
-File: bashref.info, Node: Bash History Facilities, Next: Bash History Builtins, Up: Using History Interactively
-
-Bash History Facilities
-=======================
-
- When the `-o history' option to the `set' builtin is enabled (*note
-The Set Builtin::.), the shell provides access to the COMMAND HISTORY,
-the list of commands previously typed. The text of the last `HISTSIZE'
-commands (default 500) is saved in a history list. The shell stores
-each command in the history list prior to parameter and variable
-expansion but after history expansion is performed, subject to the
-values of the shell variables `HISTIGNORE' and `HISTCONTROL'. When the
-shell starts up, the history is initialized from the file named by the
-`HISTFILE' variable (default `~/.bash_history'). `HISTFILE' is
-truncated, if necessary, to contain no more than the number of lines
-specified by the value of the `HISTFILESIZE' variable. When an
-interactive shell exits, the last `HISTSIZE' lines are copied from the
-history list to `HISTFILE'. If the `histappend' shell option is set
-(*note Bash Builtins::.), the lines are appended to the history file,
-otherwise the history file is overwritten. If `HISTFILE' is unset, or
-if the history file is unwritable, the history is not saved. After
-saving the history, the history file is truncated to contain no more
-than `$HISTFILESIZE' lines. If `HISTFILESIZE' is not set, no
-truncation is performed.
-
- The builtin command `fc' may be used to list or edit and re-execute
-a portion of the history list. The `history' builtin can be used to
-display or modify the history list and manipulate the history file.
-When using the command-line editing, search commands are available in
-each editing mode that provide access to the history list.
-
- The shell allows control over which commands are saved on the history
-list. The `HISTCONTROL' and `HISTIGNORE' variables may be set to cause
-the shell to save only a subset of the commands entered. The `cmdhist'
-shell option, if enabled, causes the shell to attempt to save each line
-of a multi-line command in the same history entry, adding semicolons
-where necessary to preserve syntactic correctness. The `lithist' shell
-option causes the shell to save the command with embedded newlines
-instead of semicolons. *Note Bash Builtins::, for a description of
-`shopt'.
-
-
-File: bashref.info, Node: Bash History Builtins, Next: History Interaction, Prev: Bash History Facilities, Up: Using History Interactively
-
-Bash History Builtins
-=====================
-
- Bash provides two builtin commands that allow you to manipulate the
-history list and history file.
-
-`fc'
- `fc [-e ENAME] [-nlr] [FIRST] [LAST]'
- `fc -s [PAT=REP] [COMMAND]'
-
- Fix Command. In the first form, a range of commands from FIRST to
- LAST is selected from the history list. Both FIRST and LAST may
- be specified as a string (to locate the most recent command
- beginning with that string) or as a number (an index into the
- history list, where a negative number is used as an offset from the
- current command number). If LAST is not specified it is set to
- FIRST. If FIRST is not specified it is set to the previous
- command for editing and -16 for listing. If the `-l' flag is
- given, the commands are listed on standard output. The `-n' flag
- suppresses the command numbers when listing. The `-r' flag
- reverses the order of the listing. Otherwise, the editor given by
- ENAME is invoked on a file containing those commands. If ENAME is
- not given, the value of the following variable expansion is used:
- `${FCEDIT:-${EDITOR:-vi}}'. This says to use the value of the
- `FCEDIT' variable if set, or the value of the `EDITOR' variable if
- that is set, or `vi' if neither is set. When editing is complete,
- the edited commands are echoed and executed.
-
- In the second form, COMMAND is re-executed after each instance of
- PAT in the selected command is replaced by REP.
-
- A useful alias to use with the `fc' command is `r='fc -s'', so
- that typing `r cc' runs the last command beginning with `cc' and
- typing `r' re-executes the last command (*note Aliases::.).
-
-`history'
- history [-c] [N]
- history [-anrw] [FILENAME]
- history -ps ARG
-
- Display the history list with line numbers. Lines prefixed with
- with a `*' have been modified. An argument of N says to list only
- the last N lines. Options, if supplied, have the following
- meanings:
-
- `-w'
- Write out the current history to the history file.
-
- `-r'
- Read the current history file and append its contents to the
- history list.
-
- `-a'
- Append the new history lines (history lines entered since the
- beginning of the current Bash session) to the history file.
-
- `-n'
- Append the history lines not already read from the history
- file to the current history list. These are lines appended
- to the history file since the beginning of the current Bash
- session.
-
- `-c'
- Clear the history list. This may be combined with the other
- options to replace the history list completely.
-
- `-s'
- The ARGs are added to the end of the history list as a single
- entry.
-
- `-p'
- Perform history substitution on the ARGs and display the
- result on the standard output, without storing the results in
- the history list.
-
- When the `-w', `-r', `-a', or `-n' option is used, if FILENAME is
- given, then it is used as the history file. If not, then the
- value of the `HISTFILE' variable is used.
-
-
-File: bashref.info, Node: History Interaction, Prev: Bash History Builtins, Up: Using History Interactively
-
-History Expansion
-=================
-
- The History library provides a history expansion feature that is
-similar to the history expansion provided by `csh'. This section
-describes the syntax used to manipulate the history information.
-
- History expansions introduce words from the history list into the
-input stream, making it easy to repeat commands, insert the arguments
-to a previous command into the current input line, or fix errors in
-previous commands quickly.
-
- History expansion takes place in two parts. The first is to
-determine which line from the history list should be used during
-substitution. The second is to select portions of that line for
-inclusion into the current one. The line selected from the history is
-called the "event", and the portions of that line that are acted upon
-are called "words". Various "modifiers" are available to manipulate
-the selected words. The line is broken into words in the same fashion
-that Bash does, so that several words surrounded by quotes are
-considered one word. History expansions are introduced by the
-appearance of the history expansion character, which is `!' by default.
-Only `\' and `'' may be used to escape the history expansion character.
-
- Several shell options settable with the `shopt' builtin (*note Bash
-Builtins::.) may be used to tailor the behavior of history expansion.
-If the `histverify' shell option is enabled, and Readline is being
-used, history substitutions are not immediately passed to the shell
-parser. Instead, the expanded line is reloaded into the Readline
-editing buffer for further modification. If Readline is being used,
-and the `histreedit' shell option is enabled, a failed history
-expansion will be reloaded into the Readline editing buffer for
-correction. The `-p' option to the `history' builtin command may be
-used to see what a history expansion will do before using it. The `-s'
-option to the `history' builtin may be used to add commands to the end
-of the history list without actually executing them, so that they are
-available for subsequent recall. This is most useful in conjunction
-with Readline.
-
- The shell allows control of the various characters used by the
-history expansion mechanism with the `histchars' variable.
-
-* Menu:
-
-* Event Designators:: How to specify which history line to use.
-* Word Designators:: Specifying which words are of interest.
-* Modifiers:: Modifying the results of substitution.
-
-
-File: bashref.info, Node: Event Designators, Next: Word Designators, Up: History Interaction
-
-Event Designators
------------------
-
- An event designator is a reference to a command line entry in the
-history list.
-
-`!'
- Start a history substitution, except when followed by a space, tab,
- the end of the line, `=' or `('.
-
-`!N'
- Refer to command line N.
-
-`!-N'
- Refer to the command N lines back.
-
-`!!'
- Refer to the previous command. This is a synonym for `!-1'.
-
-`!STRING'
- Refer to the most recent command starting with STRING.
-
-`!?STRING[?]'
- Refer to the most recent command containing STRING. The trailing
- `?' may be omitted if the STRING is followed immediately by a
- newline.
-
-`^STRING1^STRING2^'
- Quick Substitution. Repeat the last command, replacing STRING1
- with STRING2. Equivalent to `!!:s/STRING1/STRING2/'.
-
-`!#'
- The entire command line typed so far.
-
-
-File: bashref.info, Node: Word Designators, Next: Modifiers, Prev: Event Designators, Up: History Interaction
-
-Word Designators
-----------------
-
- Word designators are used to select desired words from the event. A
-`:' separates the event specification from the word designator. It may
-be omitted if the word designator begins with a `^', `$', `*', `-', or
-`%'. Words are numbered from the beginning of the line, with the first
-word being denoted by 0 (zero). Words are inserted into the current
-line separated by single spaces.
-
-`0 (zero)'
- The `0'th word. For many applications, this is the command word.
-
-`N'
- The Nth word.
-
-`^'
- The first argument; that is, word 1.
-
-`$'
- The last argument.
-
-`%'
- The word matched by the most recent `?STRING?' search.
-
-`X-Y'
- A range of words; `-Y' abbreviates `0-Y'.
-
-`*'
- All of the words, except the `0'th. This is a synonym for `1-$'.
- It is not an error to use `*' if there is just one word in the
- event; the empty string is returned in that case.
-
-`X*'
- Abbreviates `X-$'
-
-`X-'
- Abbreviates `X-$' like `X*', but omits the last word.
-
- If a word designator is supplied without an event specification, the
-previous command is used as the event.
-
-
-File: bashref.info, Node: Modifiers, Prev: Word Designators, Up: History Interaction
-
-Modifiers
----------
-
- After the optional word designator, you can add a sequence of one or
-more of the following modifiers, each preceded by a `:'.
-
-`h'
- Remove a trailing pathname component, leaving only the head.
-
-`t'
- Remove all leading pathname components, leaving the tail.
-
-`r'
- Remove a trailing suffix of the form `.SUFFIX', leaving the
- basename.
-
-`e'
- Remove all but the trailing suffix.
-
-`p'
- Print the new command but do not execute it.
-
-`q'
- Quote the substituted words, escaping further substitutions.
-
-`x'
- Quote the substituted words as with `q', but break into words at
- spaces, tabs, and newlines.
-
-`s/OLD/NEW/'
- Substitute NEW for the first occurrence of OLD in the event line.
- Any delimiter may be used in place of `/'. The delimiter may be
- quoted in OLD and NEW with a single backslash. If `&' appears in
- NEW, it is replaced by OLD. A single backslash will quote the
- `&'. The final delimiter is optional if it is the last character
- on the input line.
-
-`&'
- Repeat the previous substitution.
-
-`g'
- Cause changes to be applied over the entire event line. Used in
- conjunction with `s', as in `gs/OLD/NEW/', or with `&'.
-
-
File: bashref.info, Node: Command Line Editing, Next: Installing Bash, Prev: Using History Interactively, Up: Top
Command Line Editing
********************
This chapter describes the basic features of the GNU command line
-editing interface.
+editing interface. Command line editing is provided by the Readline
+library, which is used by several different programs, including Bash.
* Menu:
@@ -5168,6 +5013,11 @@ editing interface.
* Readline vi Mode:: A short description of how to make Readline
behave like the vi editor.
+* Programmable Completion:: How to specify the possible completions for
+ a specific command.
+* Programmable Completion Builtins:: Builtin commands to specify how to
+ complete arguments for a particular command.
+

File: bashref.info, Node: Introduction and Notation, Next: Readline Interaction, Up: Command Line Editing
@@ -5181,10 +5031,18 @@ keystrokes.
produced when the <k> key is pressed while the Control key is depressed.
The text <M-k> is read as `Meta-K' and describes the character
-produced when the meta key (if you have one) is depressed, and the <k>
-key is pressed. If you do not have a meta key, the identical keystroke
-can be generated by typing <ESC> first, and then typing <k>. Either
-process is known as "metafying" the <k> key.
+produced when the Meta key (if you have one) is depressed, and the <k>
+key is pressed. The Meta key is labeled <ALT> on many keyboards. On
+keyboards with two keys labeled <ALT> (usually to either side of the
+space bar), the <ALT> on the left side is generally set to work as a
+Meta key. The <ALT> key on the right may also be configured to work as
+a Meta key or may be configured as some other modifier, such as a
+Compose key for typing accented characters.
+
+ If you do not have a Meta or <ALT> key, or another key working as a
+Meta key, the identical keystroke can be generated by typing <ESC>
+first, and then typing <k>. Either process is known as "metafying" the
+<k> key.
The text <M-C-k> is read as `Meta-Control-k' and describes the
character produced by "metafying" <C-k>.
@@ -5192,7 +5050,9 @@ character produced by "metafying" <C-k>.
In addition, several keys have their own names. Specifically,
<DEL>, <ESC>, <LFD>, <SPC>, <RET>, and <TAB> all stand for themselves
when seen in this text, or in an init file (*note Readline Init
-File::.).
+File::.). If your keyboard lacks a <LFD> key, typing <C-j> will
+produce the desired character. The <RET> key may be labeled <Return>
+or <Enter> on some keyboards.

File: bashref.info, Node: Readline Interaction, Next: Readline Init File, Prev: Introduction and Notation, Up: Command Line Editing
@@ -5230,18 +5090,17 @@ typed character appears where the cursor was, and then the cursor moves
one space to the right. If you mistype a character, you can use your
erase character to back up and delete the mistyped character.
- Sometimes you may miss typing a character that you wanted to type,
-and not notice your error until you have typed several other
-characters. In that case, you can type <C-b> to move the cursor to the
-left, and then correct your mistake. Afterwards, you can move the
-cursor to the right with <C-f>.
+ Sometimes you may mistype a character, and not notice the error
+until you have typed several other characters. In that case, you can
+type <C-b> to move the cursor to the left, and then correct your
+mistake. Afterwards, you can move the cursor to the right with <C-f>.
When you add text in the middle of a line, you will notice that
characters to the right of the cursor are `pushed over' to make room
for the text that you have inserted. Likewise, when you delete text
behind the cursor, characters to the right of the cursor are `pulled
back' to fill in the blank space created by the removal of the text. A
-list of the basic bare essentials for editing the text of an input line
+list of the bare essentials for editing the text of an input line
follows.
<C-b>
@@ -5250,7 +5109,7 @@ follows.
<C-f>
Move forward one character.
-<DEL>
+<DEL> or <Backspace>
Delete the character to the left of the cursor.
<C-d>
@@ -5259,21 +5118,25 @@ follows.
Printing characters
Insert the character into the line at the cursor.
-<C-_>
+<C-_> or <C-x C-u>
Undo the last editing command. You can undo all the way back to an
empty line.
+(Depending on your configuration, the <Backspace> key be set to delete
+the character to the left of the cursor and the <DEL> key set to delete
+the character underneath the cursor, like <C-d>, rather than the
+character to the left of the cursor.)
+

File: bashref.info, Node: Readline Movement Commands, Next: Readline Killing Commands, Prev: Readline Bare Essentials, Up: Readline Interaction
Readline Movement Commands
--------------------------
- The above table describes the most basic possible keystrokes that
-you need in order to do editing of the input line. For your
-convenience, many other commands have been added in addition to <C-b>,
-<C-f>, <C-d>, and <DEL>. Here are some commands for moving more rapidly
-about the line.
+ The above table describes the most basic keystrokes that you need in
+order to do editing of the input line. For your convenience, many
+other commands have been added in addition to <C-b>, <C-f>, <C-d>, and
+<DEL>. Here are some commands for moving more rapidly about the line.
<C-a>
Move to the start of the line.
@@ -5303,9 +5166,12 @@ Readline Killing Commands
"Killing" text means to delete the text from the line, but to save
it away for later use, usually by "yanking" (re-inserting) it back into
-the line. If the description for a command says that it `kills' text,
-then you can be sure that you can get the text back in a different (or
-the same) place later.
+the line. (`Cut' and `paste' are more recent jargon for `kill' and
+`yank'.)
+
+ If the description for a command says that it `kills' text, then you
+can be sure that you can get the text back in a different (or the same)
+place later.
When you use a kill command, the text is saved in a "kill-ring".
Any number of consecutive kills save all of the killed text together, so
@@ -5320,12 +5186,14 @@ available to be yanked back later, when you are typing another line.
line.
<M-d>
- Kill from the cursor to the end of the current word, or if between
- words, to the end of the next word.
+ Kill from the cursor to the end of the current word, or, if between
+ words, to the end of the next word. Word boundaries are the same
+ as those used by <M-f>.
<M-DEL>
- Kill from the cursor the start of the previous word, or if between
- words, to the start of the previous word.
+ Kill from the cursor the start of the previous word, or, if between
+ words, to the start of the previous word. Word boundaries are the
+ same as those used by <M-b>.
<C-w>
Kill from the cursor to the previous whitespace. This is
@@ -5357,7 +5225,7 @@ start of the line, you might type `M-- C-k'.
The general way to pass numeric arguments to a command is to type
meta digits before the command. If the first `digit' typed is a minus
-sign (<->), then the sign of the argument will be negative. Once you
+sign (`-'), then the sign of the argument will be negative. Once you
have typed one meta digit to get the argument started, you can type the
remainder of the digits, and then the command. For example, to give
the <C-d> command an argument of 10, you could type `M-1 0 C-d'.
@@ -5369,26 +5237,30 @@ Searching for Commands in the History
-------------------------------------
Readline provides commands for searching through the command history
-(*note Bash History Facilities::.) for lines containing a specified
+(*note Bash History Facilities::.) for lines containing a specified
string. There are two search modes: INCREMENTAL and NON-INCREMENTAL.
Incremental searches begin before the user has finished typing the
search string. As each character of the search string is typed,
Readline displays the next entry from the history matching the string
typed so far. An incremental search requires only as many characters
-as needed to find the desired history entry. The characters present in
-the value of the ISEARCH-TERMINATORS variable are used to terminate an
-incremental search. If that variable has not been assigned a value,
-the <ESC> and <C-J> characters will terminate an incremental search.
-<C-g> will abort an incremental search and restore the original line.
-When the search is terminated, the history entry containing the search
-string becomes the current line. To find other matching entries in the
-history list, type <C-s> or <C-r> as appropriate. This will search
-backward or forward in the history for the next entry matching the
-search string typed so far. Any other key sequence bound to a Readline
-command will terminate the search and execute that command. For
-instance, a <RET> will terminate the search and accept the line,
-thereby executing the command from the history list.
+as needed to find the desired history entry. To search backward in the
+history for a particular string, type <C-r>. Typing <C-s> searches
+forward through the history. The characters present in the value of
+the `isearch-terminators' variable are used to terminate an incremental
+search. If that variable has not been assigned a value, the <ESC> and
+<C-J> characters will terminate an incremental search. <C-g> will
+abort an incremental search and restore the original line. When the
+search is terminated, the history entry containing the search string
+becomes the current line.
+
+ To find other matching entries in the history list, type <C-r> or
+<C-s> as appropriate. This will search backward or forward in the
+history for the next entry matching the search string typed so far.
+Any other key sequence bound to a Readline command will terminate the
+search and execute that command. For instance, a <RET> will terminate
+the search and accept the line, thereby executing the command from the
+history list.
Non-incremental searches read the entire search string before
starting to search for matching history lines. The search string may be
@@ -5400,12 +5272,13 @@ File: bashref.info, Node: Readline Init File, Next: Bindable Readline Commands
Readline Init File
==================
- Although the Readline library comes with a set of `emacs'-like
+ Although the Readline library comes with a set of Emacs-like
keybindings installed by default, it is possible to use a different set
of keybindings. Any user can customize programs that use Readline by
-putting commands in an "inputrc" file in his home directory. The name
-of this file is taken from the value of the shell variable `INPUTRC'.
-If that variable is unset, the default is `~/.inputrc'.
+putting commands in an "inputrc" file, conventionally in his home
+directory. The name of this file is taken from the value of the shell
+variable `INPUTRC'. If that variable is unset, the default is
+`~/.inputrc'.
When a program which uses the Readline library starts up, the init
file is read, and the key bindings are set.
@@ -5441,6 +5314,9 @@ Variable Settings
set editing-mode vi
+ The `bind -V' command lists the current Readline variable names
+ and values. *Note Bash Builtins::.
+
A great deal of run-time behavior is changeable with the following
variables.
@@ -5472,7 +5348,7 @@ Variable Settings
`convert-meta'
If set to `on', Readline will convert characters with the
eighth bit set to an ASCII key sequence by stripping the
- eighth bit and prepending an <ESC> character, converting them
+ eighth bit and prefixing an <ESC> character, converting them
to a meta-prefixed key sequence. The default value is `on'.
`disable-completion'
@@ -5557,7 +5433,7 @@ Variable Settings
Key Bindings
The syntax for controlling key bindings in the init file is
- simple. First you have to know the name of the command that you
+ simple. First you need to find the name of the command that you
want to change. The following sections contain tables of the
command name, the default keybinding, if any, and a short
description of what the command does.
@@ -5568,6 +5444,10 @@ Key Bindings
key can be expressed in different ways, depending on which is most
comfortable for you.
+ The `bind -p' command displays Readline function names and
+ bindings in a format that can put directly into an initialization
+ file. *Note Bash Builtins::.
+
KEYNAME: FUNCTION-NAME or MACRO
KEYNAME is the name of a key spelled out in English. For
example:
@@ -5613,10 +5493,10 @@ Key Bindings
backslash
`\"'
- <">
+ <">, a double quotation mark
`\''
- <'>
+ <'>, a single quote or apostrophe
In addition to the GNU Emacs style escape sequences, a second set
of backslash escapes is available:
@@ -5646,11 +5526,11 @@ Key Bindings
vertical tab
`\NNN'
- the character whose ASCII code is the octal value NNN (one to
- three digits)
+ the character whose `ASCII' code is the octal value NNN (one
+ to three digits)
`\xNNN'
- the character whose ASCII code is the hexadecimal value NNN
+ the character whose `ASCII' code is the hexadecimal value NNN
(one to three digits)
When entering the text of a macro, single or double quotes must be
@@ -5847,7 +5727,15 @@ Bindable Readline Commands
* Miscellaneous Commands:: Other miscellaneous commands.
This section describes Readline commands that may be bound to key
-sequences.
+sequences. You can list your key bindings by executing `bind -P' or,
+for a more terse format, suitable for an INPUTRC file, `bind -p'.
+(*Note Bash Builtins::.)
+
+ Command names without an accompanying key sequence are unbound by
+default. In the following descriptions, POINT refers to the current
+cursor position, and MARK refers to a cursor position saved by the
+`set-mark' command. The text between the point and mark is referred to
+as the REGION.

File: bashref.info, Node: Commands For Moving, Next: Commands For History, Up: Bindable Readline Commands
@@ -5872,7 +5760,7 @@ Commands For Moving
letters and digits.
`backward-word (M-b)'
- Move back to the start of this, or the previous, word. Words are
+ Move back to the start of the current or previous word. Words are
composed of letters and digits.
`clear-screen (C-l)'
@@ -5928,9 +5816,8 @@ Commands For Manipulating The History
`history-search-forward ()'
Search forward through the history for the string of characters
- between the start of the current line and the current cursor
- position (the POINT). This is a non-incremental search. By
- default, this command is unbound.
+ between the start of the current line and the point. This is a
+ non-incremental search. By default, this command is unbound.
`history-search-backward ()'
Search backward through the history for the string of characters
@@ -5983,11 +5870,11 @@ Commands For Changing Text
Drag the character before the cursor forward over the character at
the cursor, moving the cursor forward as well. If the insertion
point is at the end of the line, then this transposes the last two
- characters of the line. Negative arguments don't work.
+ characters of the line. Negative arguments have no effect.
`transpose-words (M-t)'
- Drag the word behind the cursor past the word in front of the
- cursor moving the cursor over that word as well.
+ Drag the word before point past the word after point, moving point
+ past that word as well.
`upcase-word (M-u)'
Uppercase the current (or following) word. With a negative
@@ -6008,41 +5895,38 @@ Killing And Yanking
-------------------
`kill-line (C-k)'
- Kill the text from the current cursor position to the end of the
- line.
+ Kill the text from point to the end of the line.
`backward-kill-line (C-x Rubout)'
Kill backward to the beginning of the line.
`unix-line-discard (C-u)'
Kill backward from the cursor to the beginning of the current line.
- The killed text is saved on the kill-ring.
`kill-whole-line ()'
- Kill all characters on the current line, no matter where the
- cursor is. By default, this is unbound.
+ Kill all characters on the current line, no matter point is. By
+ default, this is unbound.
`kill-word (M-d)'
- Kill from the cursor to the end of the current word, or if between
+ Kill from point to the end of the current word, or if between
words, to the end of the next word. Word boundaries are the same
as `forward-word'.
`backward-kill-word (M-DEL)'
- Kill the word behind the cursor. Word boundaries are the same as
+ Kill the word behind point. Word boundaries are the same as
`backward-word'.
`unix-word-rubout (C-w)'
- Kill the word behind the cursor, using white space as a word
- boundary. The killed text is saved on the kill-ring.
+ Kill the word behind point, using white space as a word boundary.
+ The killed text is saved on the kill-ring.
`delete-horizontal-space ()'
Delete all spaces and tabs around point. By default, this is
unbound.
`kill-region ()'
- Kill the text between the point and the *mark* (saved cursor
- position). This text is referred to as the REGION. By default,
- this command is unbound.
+ Kill the text in the current region. By default, this command is
+ unbound.
`copy-region-as-kill ()'
Copy the text in the region to the kill buffer, so it can be yanked
@@ -6179,7 +6063,7 @@ Letting Readline Type For You
matches.
`complete-into-braces (M-{)'
- Perform filename completion and return the list of possible
+ Perform filename completion and insert the list of possible
completions enclosed within braces so the list is available to the
shell (*note Brace Expansion::.).
@@ -6207,7 +6091,7 @@ Some Miscellaneous Commands
---------------------------
`re-read-init-file (C-x C-r)'
- Read in the contents of the inputrc file, and incorporate any
+ Read in the contents of the INPUTRC file, and incorporate any
bindings or variable assignments found there.
`abort (C-g)'
@@ -6254,8 +6138,8 @@ Some Miscellaneous Commands
`insert-comment (M-#)'
The value of the `comment-begin' variable is inserted at the
beginning of the current line, and the line is accepted as if a
- newline had been typed. This makes the current line a shell
- comment.
+ newline had been typed. The default value of `comment-begin'
+ causes this command to make the current line a shell comment.
`dump-functions ()'
Print all of the functions and their key bindings to the Readline
@@ -6318,7 +6202,7 @@ Some Miscellaneous Commands
editing mode, as if the command `set -o emacs' had been executed.

-File: bashref.info, Node: Readline vi Mode, Prev: Bindable Readline Commands, Up: Command Line Editing
+File: bashref.info, Node: Readline vi Mode, Next: Programmable Completion, Prev: Bindable Readline Commands, Up: Command Line Editing
Readline vi Mode
================
@@ -6339,15 +6223,623 @@ the standard `vi' movement keys, move to previous history lines with
`k' and subsequent lines with `j', and so forth.

+File: bashref.info, Node: Programmable Completion, Next: Programmable Completion Builtins, Prev: Readline vi Mode, Up: Command Line Editing
+
+Programmable Completion
+=======================
+
+ When word completion is attempted for an argument to a command for
+which a completion specification (a COMPSPEC) has been defined using
+the `complete' builtin (*note Programmable Completion Builtins::.), the
+programmable completion facilities are invoked.
+
+ First, the command name is identified. If a compspec has been
+defined for that command, the compspec is used to generate the list of
+possible completions for the word. If the command word is a full
+pathname, a compspec for the full pathname is searched for first. If
+no compspec is found for the full pathname, an attempt is made to find
+a compspec for the portion following the final slash.
+
+ Once a compspec has been found, it is used to generate the list of
+matching words. If a compspec is not found, the default Bash completion
+described above (*note Commands For Completion::.) is performed.
+
+ First, the actions specified by the compspec are used. Only matches
+which are prefixed by the word being completed are returned. When the
+`-f' or `-d' option is used for filename or directory name completion,
+the shell variable `FIGNORE' is used to filter the matches. *Note Bash
+Variables::, for a description of `FIGNORE'.
+
+ Any completions specified by a filename expansion pattern to the
+`-G' option are generated next. The words generated by the pattern
+need not match the word being completed. The `GLOBIGNORE' shell
+variable is not used to filter the matches, but the `FIGNORE' shell
+variable is used.
+
+ Next, the string specified as the argument to the `-W' option is
+considered. The string is first split using the characters in the `IFS'
+special variable as delimiters. Shell quoting is honored. Each word
+is then expanded using brace expansion, tilde expansion, parameter and
+variable expansion, command substitution, arithmetic expansion, and
+pathname expansion, as described above (*note Shell Expansions::.).
+The results are split using the rules described above (*note Word
+Splitting::.). The results of the expansion are prefix-matched against
+the word being completed, and the matching words become the possible
+completions.
+
+ After these matches have been generated, any shell function or
+command specified with the `-F' and `-C' options is invoked. When the
+command or function is invoked, the `COMP_LINE' and `COMP_POINT'
+variables are assigned values as described above (*note Bash
+Variables::.). If a shell function is being invoked, the `COMP_WORDS'
+and `COMP_CWORD' variables are also set. When the function or command
+is invoked, the first argument is the name of the command whose
+arguments are being completed, the second argument is the word being
+completed, and the third argument is the word preceding the word being
+completed on the current command line. No filtering of the generated
+completions against the word being completed is performed; the function
+or command has complete freedom in generating the matches.
+
+ Any function specified with `-F' is invoked first. The function may
+use any of the shell facilities, including the `compgen' builtin
+described below (*note Programmable Completion Builtins::.), to
+generate the matches. It must put the possible completions in the
+`COMPREPLY' array variable.
+
+ Next, any command specified with the `-C' option is invoked in an
+environment equivalent to command substitution. It should print a list
+of completions, one per line, to the standard output. Backslash may be
+used to escape a newline, if necessary.
+
+ After all of the possible completions are generated, any filter
+specified with the `-X' option is applied to the list. The filter is a
+pattern as used for pathname expansion; a `&' in the pattern is
+replaced with the text of the word being completed. A literal `&' may
+be escaped with a backslash; the backslash is removed before attempting
+a match. Any completion that matches the pattern will be removed from
+the list. A leading `!' negates the pattern; in this case any
+completion not matching the pattern will be removed.
+
+ Finally, any prefix and suffix specified with the `-P' and `-S'
+options are added to each member of the completion list, and the result
+is returned to the Readline completion code as the list of possible
+completions.
+
+ If a compspec is found, whatever it generates is returned to the
+completion code as the full set of possible completions. The default
+Bash completions are not attempted, and the Readline default of
+filename completion is disabled.
+
+
+File: bashref.info, Node: Programmable Completion Builtins, Prev: Programmable Completion, Up: Command Line Editing
+
+Programmable Completion Builtins
+================================
+
+ Two builtin commands are available to manipulate the programmable
+completion facilities.
+
+`compgen'
+ `compgen [OPTION] [WORD]'
+
+ Generate possible completion matches for WORD according to the
+ OPTIONs, which may be any option accepted by the `complete'
+ builtin with the exception of `-p' and `-r', and write the matches
+ to the standard output. When using the `-F' or `-C' options, the
+ various shell variables set by the programmable completion
+ facilities, while available, will not have useful values.
+
+ The matches will be generated in the same way as if the
+ programmable completion code had generated them directly from a
+ completion specification with the same flags. If WORD is
+ specified, only those completions matching WORD will be displayed.
+
+ The return value is true unless an invalid option is supplied, or
+ no matches were generated.
+
+`complete'
+ `complete [-abcdefjkvu] [-A ACTION] [-G GLOBPAT] [-W WORDLIST]
+ [-P PREFIX] [-S SUFFIX] [-X FILTERPAT] [-F FUNCTION]
+ [-C COMMAND] NAME [NAME ...]'
+ `complete -pr [NAME ...]'
+
+ Specify how arguments to each NAME should be completed. If the
+ `-p' option is supplied, or if no options are supplied, existing
+ completion specifications are printed in a way that allows them to
+ be reused as input. The `-r' option removes a completion
+ specification for each NAME, or, if no NAMEs are supplied, all
+ completion specifications.
+
+ The process of applying these completion specifications when word
+ completion is attempted is described above (*note Programmable
+ Completion::.).
+
+ Other options, if specified, have the following meanings. The
+ arguments to the `-G', `-W', and `-X' options (and, if necessary,
+ the `-P' and `-S' options) should be quoted to protect them from
+ expansion before the `complete' builtin is invoked.
+
+ `-A ACTION'
+ The ACTION may be one of the following to generate a list of
+ possible completions:
+
+ `alias'
+ Alias names. May also be specified as `-a'.
+
+ `arrayvar'
+ Array variable names.
+
+ `binding'
+ Readline key binding names (*note Bindable Readline
+ Commands::.).
+
+ `builtin'
+ Names of shell builtin commands. May also be specified
+ as `-b'.
+
+ `command'
+ Command names. May also be specified as `-c'.
+
+ `directory'
+ Directory names. May also be specified as `-d'.
+
+ `disabled'
+ Names of disabled shell builtins.
+
+ `enabled'
+ Names of enabled shell builtins.
+
+ `export'
+ Names of exported shell variables. May also be
+ specified as `-e'.
+
+ `file'
+ File names. May also be specified as `-f'.
+
+ `function'
+ Names of shell functions.
+
+ `helptopic'
+ Help topics as accepted by the `help' builtin (*note
+ Bash Builtins::.).
+
+ `hostname'
+ Hostnames, as taken from the file specified by the
+ `HOSTFILE' shell variable (*note Bash Variables::.).
+
+ `job'
+ Job names, if job control is active. May also be
+ specified as `-j'.
+
+ `keyword'
+ Shell reserved words. May also be specified as `-k'.
+
+ `running'
+ Names of running jobs, if job control is active.
+
+ `setopt'
+ Valid arguments for the `-o' option to the `set' builtin
+ (*note The Set Builtin::.).
+
+ `shopt'
+ Shell option names as accepted by the `shopt' builtin
+ (*note Bash Builtins::.).
+
+ `signal'
+ Signal names.
+
+ `stopped'
+ Names of stopped jobs, if job control is active.
+
+ `user'
+ User names. May also be specified as `-u'.
+
+ `variable'
+ Names of all shell variables. May also be specified as
+ `-v'.
+
+ `-G GLOBPAT'
+ The filename expansion pattern GLOBPAT is expanded to generate
+ the possible completions.
+
+ `-W WORDLIST'
+ The WORDLIST is split using the characters in the `IFS'
+ special variable as delimiters, and each resultant word is
+ expanded. The possible completions are the members of the
+ resultant list which match the word being completed.
+
+ `-C COMMAND'
+ COMMAND is executed in a subshell environment, and its output
+ is used as the possible completions.
+
+ `-F FUNCTION'
+ The shell function FUNCTION is executed in the current shell
+ environment. When it finishes, the possible completions are
+ retrieved from the value of the `COMPREPLY' array variable.
+
+ `-X FILTERPAT'
+ FILTERPAT is a pattern as used for filename expansion. It is
+ applied to the list of possible completions generated by the
+ preceding options and arguments, and each completion matching
+ FILTERPAT is removed from the list. A leading `!' in
+ FILTERPAT negates the pattern; in this case, any completion
+ not matching FILTERPAT is removed.
+
+ `-P PREFIX'
+ PREFIX is added at the beginning of each possible completion
+ after all other options have been applied.
+
+ `-S SUFFIX'
+ SUFFIX is appended to each possible completion after all
+ other options have been applied.
+
+ The return value is true unless an invalid option is supplied, an
+ option other than `-p' or `-r' is supplied without a NAME
+ argument, an attempt is made to remove a completion specification
+ for a NAME for which no specification exists, or an error occurs
+ adding a completion specification.
+
+
+File: bashref.info, Node: Using History Interactively, Next: Command Line Editing, Prev: Job Control, Up: Top
+
+Using History Interactively
+***************************
+
+ This chapter describes how to use the GNU History Library
+interactively, from a user's standpoint. It should be considered a
+user's guide. For information on using the GNU History Library in
+other programs, see the GNU Readline Library Manual.
+
+* Menu:
+
+* Bash History Facilities:: How Bash lets you manipulate your command
+ history.
+* Bash History Builtins:: The Bash builtin commands that manipulate
+ the command history.
+* History Interaction:: What it feels like using History as a user.
+
+
+File: bashref.info, Node: Bash History Facilities, Next: Bash History Builtins, Up: Using History Interactively
+
+Bash History Facilities
+=======================
+
+ When the `-o history' option to the `set' builtin is enabled (*note
+The Set Builtin::.), the shell provides access to the COMMAND HISTORY,
+the list of commands previously typed. The value of the `HISTSIZE'
+shell variable is used as the number of commands to save in a history
+list. The text of the last `$HISTSIZE' commands (default 500) is saved.
+The shell stores each command in the history list prior to parameter
+and variable expansion but after history expansion is performed,
+subject to the values of the shell variables `HISTIGNORE' and
+`HISTCONTROL'.
+
+ When the shell starts up, the history is initialized from the file
+named by the `HISTFILE' variable (default `~/.bash_history'). The file
+named by the value of `HISTFILE' is truncated, if necessary, to contain
+no more than the number of lines specified by the value of the
+`HISTFILESIZE' variable. When an interactive shell exits, the last
+`$HISTSIZE' lines are copied from the history list to the file named by
+`$HISTFILE'. If the `histappend' shell option is set (*note Bash
+Builtins::.), the lines are appended to the history file, otherwise the
+history file is overwritten. If `HISTFILE' is unset, or if the history
+file is unwritable, the history is not saved. After saving the
+history, the history file is truncated to contain no more than
+`$HISTFILESIZE' lines. If `HISTFILESIZE' is not set, no truncation is
+performed.
+
+ The builtin command `fc' may be used to list or edit and re-execute
+a portion of the history list. The `history' builtin may be used to
+display or modify the history list and manipulate the history file.
+When using command-line editing, search commands are available in each
+editing mode that provide access to the history list (*note Commands
+For History::.).
+
+ The shell allows control over which commands are saved on the history
+list. The `HISTCONTROL' and `HISTIGNORE' variables may be set to cause
+the shell to save only a subset of the commands entered. The `cmdhist'
+shell option, if enabled, causes the shell to attempt to save each line
+of a multi-line command in the same history entry, adding semicolons
+where necessary to preserve syntactic correctness. The `lithist' shell
+option causes the shell to save the command with embedded newlines
+instead of semicolons. The `shopt' builtin is used to set these
+options. *Note Bash Builtins::, for a description of `shopt'.
+
+
+File: bashref.info, Node: Bash History Builtins, Next: History Interaction, Prev: Bash History Facilities, Up: Using History Interactively
+
+Bash History Builtins
+=====================
+
+ Bash provides two builtin commands which manipulate the history list
+and history file.
+
+`fc'
+ `fc [-e ENAME] [-nlr] [FIRST] [LAST]'
+ `fc -s [PAT=REP] [COMMAND]'
+
+ Fix Command. In the first form, a range of commands from FIRST to
+ LAST is selected from the history list. Both FIRST and LAST may
+ be specified as a string (to locate the most recent command
+ beginning with that string) or as a number (an index into the
+ history list, where a negative number is used as an offset from the
+ current command number). If LAST is not specified it is set to
+ FIRST. If FIRST is not specified it is set to the previous
+ command for editing and -16 for listing. If the `-l' flag is
+ given, the commands are listed on standard output. The `-n' flag
+ suppresses the command numbers when listing. The `-r' flag
+ reverses the order of the listing. Otherwise, the editor given by
+ ENAME is invoked on a file containing those commands. If ENAME is
+ not given, the value of the following variable expansion is used:
+ `${FCEDIT:-${EDITOR:-vi}}'. This says to use the value of the
+ `FCEDIT' variable if set, or the value of the `EDITOR' variable if
+ that is set, or `vi' if neither is set. When editing is complete,
+ the edited commands are echoed and executed.
+
+ In the second form, COMMAND is re-executed after each instance of
+ PAT in the selected command is replaced by REP.
+
+ A useful alias to use with the `fc' command is `r='fc -s'', so
+ that typing `r cc' runs the last command beginning with `cc' and
+ typing `r' re-executes the last command (*note Aliases::.).
+
+`history'
+ history [N]
+ history -c
+ history -d OFFSET
+ history [-anrw] [FILENAME]
+ history -ps ARG
+
+ With no options, display the history list with line numbers.
+ Lines prefixed with with a `*' have been modified. An argument of
+ N lists only the last N lines. Options, if supplied, have the
+ following meanings:
+
+ `-c'
+ Clear the history list. This may be combined with the other
+ options to replace the history list completely.
+
+ `-d OFFSET'
+ Delete the history entry at position OFFSET. OFFSET should
+ be specified as it appears when the history is displayed.
+
+ `-a'
+ Append the new history lines (history lines entered since the
+ beginning of the current Bash session) to the history file.
+
+ `-n'
+ Append the history lines not already read from the history
+ file to the current history list. These are lines appended
+ to the history file since the beginning of the current Bash
+ session.
+
+ `-r'
+ Read the current history file and append its contents to the
+ history list.
+
+ `-w'
+ Write out the current history to the history file.
+
+ `-p'
+ Perform history substitution on the ARGs and display the
+ result on the standard output, without storing the results in
+ the history list.
+
+ `-s'
+ The ARGs are added to the end of the history list as a single
+ entry.
+
+ When any of the `-w', `-r', `-a', or `-n' options is used, if
+ FILENAME is given, then it is used as the history file. If not,
+ then the value of the `HISTFILE' variable is used.
+
+
+File: bashref.info, Node: History Interaction, Prev: Bash History Builtins, Up: Using History Interactively
+
+History Expansion
+=================
+
+ The History library provides a history expansion feature that is
+similar to the history expansion provided by `csh'. This section
+describes the syntax used to manipulate the history information.
+
+ History expansions introduce words from the history list into the
+input stream, making it easy to repeat commands, insert the arguments
+to a previous command into the current input line, or fix errors in
+previous commands quickly.
+
+ History expansion takes place in two parts. The first is to
+determine which line from the history list should be used during
+substitution. The second is to select portions of that line for
+inclusion into the current one. The line selected from the history is
+called the "event", and the portions of that line that are acted upon
+are called "words". Various "modifiers" are available to manipulate
+the selected words. The line is broken into words in the same fashion
+that Bash does, so that several words surrounded by quotes are
+considered one word. History expansions are introduced by the
+appearance of the history expansion character, which is `!' by default.
+Only `\' and `'' may be used to escape the history expansion character.
+
+ Several shell options settable with the `shopt' builtin (*note Bash
+Builtins::.) may be used to tailor the behavior of history expansion.
+If the `histverify' shell option is enabled, and Readline is being
+used, history substitutions are not immediately passed to the shell
+parser. Instead, the expanded line is reloaded into the Readline
+editing buffer for further modification. If Readline is being used,
+and the `histreedit' shell option is enabled, a failed history
+expansion will be reloaded into the Readline editing buffer for
+correction. The `-p' option to the `history' builtin command may be
+used to see what a history expansion will do before using it. The `-s'
+option to the `history' builtin may be used to add commands to the end
+of the history list without actually executing them, so that they are
+available for subsequent recall. This is most useful in conjunction
+with Readline.
+
+ The shell allows control of the various characters used by the
+history expansion mechanism with the `histchars' variable.
+
+* Menu:
+
+* Event Designators:: How to specify which history line to use.
+* Word Designators:: Specifying which words are of interest.
+* Modifiers:: Modifying the results of substitution.
+
+
+File: bashref.info, Node: Event Designators, Next: Word Designators, Up: History Interaction
+
+Event Designators
+-----------------
+
+ An event designator is a reference to a command line entry in the
+history list.
+
+`!'
+ Start a history substitution, except when followed by a space, tab,
+ the end of the line, `=' or `('.
+
+`!N'
+ Refer to command line N.
+
+`!-N'
+ Refer to the command N lines back.
+
+`!!'
+ Refer to the previous command. This is a synonym for `!-1'.
+
+`!STRING'
+ Refer to the most recent command starting with STRING.
+
+`!?STRING[?]'
+ Refer to the most recent command containing STRING. The trailing
+ `?' may be omitted if the STRING is followed immediately by a
+ newline.
+
+`^STRING1^STRING2^'
+ Quick Substitution. Repeat the last command, replacing STRING1
+ with STRING2. Equivalent to `!!:s/STRING1/STRING2/'.
+
+`!#'
+ The entire command line typed so far.
+
+
+File: bashref.info, Node: Word Designators, Next: Modifiers, Prev: Event Designators, Up: History Interaction
+
+Word Designators
+----------------
+
+ Word designators are used to select desired words from the event. A
+`:' separates the event specification from the word designator. It may
+be omitted if the word designator begins with a `^', `$', `*', `-', or
+`%'. Words are numbered from the beginning of the line, with the first
+word being denoted by 0 (zero). Words are inserted into the current
+line separated by single spaces.
+
+ For example,
+
+`!!'
+ designates the preceding command. When you type this, the
+ preceding command is repeated in toto.
+
+`!!:$'
+ designates the last argument of the preceding command. This may be
+ shortened to `!$'.
+
+`!fi:2'
+ designates the second argument of the most recent command starting
+ with the letters `fi'.
+
+ Here are the word designators:
+
+`0 (zero)'
+ The `0'th word. For many applications, this is the command word.
+
+`N'
+ The Nth word.
+
+`^'
+ The first argument; that is, word 1.
+
+`$'
+ The last argument.
+
+`%'
+ The word matched by the most recent `?STRING?' search.
+
+`X-Y'
+ A range of words; `-Y' abbreviates `0-Y'.
+
+`*'
+ All of the words, except the `0'th. This is a synonym for `1-$'.
+ It is not an error to use `*' if there is just one word in the
+ event; the empty string is returned in that case.
+
+`X*'
+ Abbreviates `X-$'
+
+`X-'
+ Abbreviates `X-$' like `X*', but omits the last word.
+
+ If a word designator is supplied without an event specification, the
+previous command is used as the event.
+
+
+File: bashref.info, Node: Modifiers, Prev: Word Designators, Up: History Interaction
+
+Modifiers
+---------
+
+ After the optional word designator, you can add a sequence of one or
+more of the following modifiers, each preceded by a `:'.
+
+`h'
+ Remove a trailing pathname component, leaving only the head.
+
+`t'
+ Remove all leading pathname components, leaving the tail.
+
+`r'
+ Remove a trailing suffix of the form `.SUFFIX', leaving the
+ basename.
+
+`e'
+ Remove all but the trailing suffix.
+
+`p'
+ Print the new command but do not execute it.
+
+`q'
+ Quote the substituted words, escaping further substitutions.
+
+`x'
+ Quote the substituted words as with `q', but break into words at
+ spaces, tabs, and newlines.
+
+`s/OLD/NEW/'
+ Substitute NEW for the first occurrence of OLD in the event line.
+ Any delimiter may be used in place of `/'. The delimiter may be
+ quoted in OLD and NEW with a single backslash. If `&' appears in
+ NEW, it is replaced by OLD. A single backslash will quote the
+ `&'. The final delimiter is optional if it is the last character
+ on the input line.
+
+`&'
+ Repeat the previous substitution.
+
+`g'
+ Cause changes to be applied over the entire event line. Used in
+ conjunction with `s', as in `gs/OLD/NEW/', or with `&'.
+
+
File: bashref.info, Node: Installing Bash, Next: Reporting Bugs, Prev: Command Line Editing, Up: Top
Installing Bash
***************
This chapter provides basic instructions for installing Bash on the
-various supported platforms. The distribution supports nearly every
-version of Unix (and, someday, GNU). Other independent ports exist for
-MS-DOS, OS/2, Windows 95, and Windows NT.
+various supported platforms. The distribution supports the GNU
+operating systems, nearly every version of Unix, and several non-Unix
+systems such as BeOS and Interix. Other independent ports exist for
+MS-DOS, OS/2, Windows 95/98, and Windows NT.
* Menu:
@@ -6380,18 +6872,45 @@ Basic Installation
These are installation instructions for Bash.
+ The simplest way to compile Bash is:
+
+ 1. `cd' to the directory containing the source code and type
+ `./configure' to configure Bash for your system. If you're using
+ `csh' on an old version of System V, you might need to type `sh
+ ./configure' instead to prevent `csh' from trying to execute
+ `configure' itself.
+
+ Running `configure' takes some time. While running, it prints
+ messages telling which features it is checking for.
+
+ 2. Type `make' to compile Bash and build the `bashbug' bug reporting
+ script.
+
+ 3. Optionally, type `make tests' to run the Bash test suite.
+
+ 4. Type `make install' to install `bash' and `bashbug'. This will
+ also install the manual pages and Info file.
+
+
The `configure' shell script attempts to guess correct values for
various system-dependent variables used during compilation. It uses
those values to create a `Makefile' in each directory of the package
-(the top directory, the `builtins' and `doc' directories, and the each
-directory under `lib'). It also creates a `config.h' file containing
-system-dependent definitions. Finally, it creates a shell script named
-`config.status' that you can run in the future to recreate the current
-configuration, a file `config.cache' that saves the results of its
-tests to speed up reconfiguring, and a file `config.log' containing
-compiler output (useful mainly for debugging `configure'). If at some
-point `config.cache' contains results you don't want to keep, you may
-remove or edit it.
+(the top directory, the `builtins', `doc', and `support' directories,
+each directory under `lib', and several others). It also creates a
+`config.h' file containing system-dependent definitions. Finally, it
+creates a shell script named `config.status' that you can run in the
+future to recreate the current configuration, a file `config.cache'
+that saves the results of its tests to speed up reconfiguring, and a
+file `config.log' containing compiler output (useful mainly for
+debugging `configure'). If at some point `config.cache' contains
+results you don't want to keep, you may remove or edit it.
+
+ To find out more about the options and arguments that the
+`configure' script understands, type
+
+ bash-2.04$ ./configure --help
+
+at the Bash prompt in your Bash source directory.
If you need to do unusual things to compile Bash, please try to
figure out how `configure' could check whether or not to do them, and
@@ -6411,26 +6930,6 @@ contain the patch level of the Bash distribution, `0' for example. The
script `support/mkconffiles' has been provided to automate the creation
of these files.
- The simplest way to compile Bash is:
-
- 1. `cd' to the directory containing the source code and type
- `./configure' to configure Bash for your system. If you're using
- `csh' on an old version of System V, you might need to type `sh
- ./configure' instead to prevent `csh' from trying to execute
- `configure' itself.
-
- Running `configure' takes awhile. While running, it prints some
- messages telling which features it is checking for.
-
- 2. Type `make' to compile Bash and build the `bashbug' bug reporting
- script.
-
- 3. Optionally, type `make tests' to run the Bash test suite.
-
- 4. Type `make install' to install `bash' and `bashbug'. This will
- also install the manual pages and Info file.
-
-
You can remove the program binaries and object files from the source
code directory by typing `make clean'. To also remove the files that
`configure' created (so you can compile Bash for a different kind of
@@ -6503,7 +7002,7 @@ than `/usr/local' by giving `configure' the option `--prefix=PATH'.
You can specify separate installation prefixes for
architecture-specific files and architecture-independent files. If you
give `configure' the option `--exec-prefix=PATH', `make install' will
-use `PATH' as the prefix for installing programs and libraries.
+use PATH as the prefix for installing programs and libraries.
Documentation and other data files will still use the regular prefix.

@@ -6520,7 +7019,8 @@ message saying it can not guess the host type, give it the
type, such as `sun4', or a canonical name with three fields:
`CPU-COMPANY-SYSTEM' (e.g., `sparc-sun-sunos4.1.2').
-See the file `support/config.sub' for the possible values of each field.
+ See the file `support/config.sub' for the possible values of each
+field.

File: bashref.info, Node: Sharing Defaults, Next: Operation Controls, Prev: Specifying the System Type, Up: Installing Bash
@@ -6568,7 +7068,7 @@ operates.
script, and exit.
`configure' also accepts some other, not widely used, boilerplate
-options.
+options. `configure --help' prints the complete list.

File: bashref.info, Node: Optional Features, Prev: Operation Controls, Up: Installing Bash
@@ -6579,8 +7079,8 @@ Optional Features
The Bash `configure' has a number of `--enable-FEATURE' options,
where FEATURE indicates an optional part of Bash. There are also
several `--with-PACKAGE' options, where PACKAGE is something like
-`gnu-malloc' or `purify'. To turn off the default use of a package, use
-`--without-PACKAGE'. To configure Bash without a feature that is
+`bash-malloc' or `purify'. To turn off the default use of a package,
+use `--without-PACKAGE'. To configure Bash without a feature that is
enabled by default, use `--disable-FEATURE'.
Here is a complete list of the `--enable-' and `--with-' options
@@ -6589,6 +7089,15 @@ that the Bash `configure' recognizes.
`--with-afs'
Define if you are using the Andrew File System from Transarc.
+`--with-bash-malloc'
+ Use the Bash version of `malloc' in `lib/malloc/malloc.c'. This
+ is not the same `malloc' that appears in GNU libc, but an older
+ version derived from the 4.2 BSD `malloc'. This `malloc' is very
+ fast, but wastes some space on each allocation. This option is
+ enabled by default. The `NOTES' file contains a list of systems
+ for which this should be turned off, and `configure' disables this
+ option automatically for a number of systems.
+
`--with-curses'
Use the curses library instead of the termcap library. This should
be supplied if your system has an inadequate or incomplete termcap
@@ -6600,25 +7109,19 @@ that the Bash `configure' recognizes.
2, but a modified version of the `malloc' from glibc version 1.
This is somewhat slower than the default `malloc', but wastes less
space on a per-allocation basis, and will return memory to the
- operating system under some circumstances.
+ operating system under certain circumstances.
`--with-gnu-malloc'
- Use the GNU version of `malloc' in `lib/malloc/malloc.c'. This is
- not the same `malloc' that appears in GNU libc, but an older
- version derived from the 4.2 BSD `malloc'. This `malloc' is very
- fast, but wastes some space on each allocation. This option is
- enabled by default. The `NOTES' file contains a list of systems
- for which this should be turned off, and `configure' disables this
- option automatically for a number of systems.
+ A synonym for `--with-bash-malloc'.
`--with-installed-readline'
- Define this to make bash link with a locally-installed version of
- Readline rather than the version in lib/readline. This works only
- with readline 4.0 and later versions.
+ Define this to make Bash link with a locally-installed version of
+ Readline rather than the version in `lib/readline'. This works
+ only with Readline 4.1 and later versions.
`--with-purify'
- Define this to use the Purify memory allocation checker from Pure
- Software.
+ Define this to use the Purify memory allocation checker from
+ Rational Software.
`--enable-minimal-config'
This produces a shell with minimal features, close to the
@@ -6640,13 +7143,18 @@ following options, but it is processed first, so individual options may
be enabled using `enable-FEATURE'.
All of the following options except for `disabled-builtins' and
-`usg-echo-default' are enabled by default, unless the operating system
+`xpg-echo-default' are enabled by default, unless the operating system
does not provide the necessary support.
`--enable-alias'
Allow alias expansion and include the `alias' and `unalias'
builtins (*note Aliases::.).
+`--enable-arith-for-command'
+ Include support for the alternate form of the `for' command that
+ behaves like the C language `for' statement (*note Looping
+ Constructs::.).
+
`--enable-array-variables'
Include support for one-dimensional array shell variables (*note
Arrays::.).
@@ -6661,9 +7169,9 @@ does not provide the necessary support.
`--enable-command-timing'
Include support for recognizing `time' as a reserved word and for
- displaying timing statistics for the pipeline following `time'.
- This allows pipelines as well as shell builtins and functions to
- be timed.
+ displaying timing statistics for the pipeline following `time'
+ (*note Pipelines::.). This allows pipelines as well as shell
+ builtins and functions to be timed.
`--enable-cond-command'
Include support for the `[[' conditional command (*note
@@ -6689,16 +7197,21 @@ does not provide the necessary support.
`--enable-help-builtin'
Include the `help' builtin, which displays help on shell builtins
- and variables.
+ and variables (*note Bash Builtins::.).
`--enable-history'
Include command history and the `fc' and `history' builtin
- commands.
+ commands (*note Bash History Facilities::.).
`--enable-job-control'
This enables the job control features (*note Job Control::.), if
the operating system supports them.
+`--enable-net-redirections'
+ This enables the special handling of filenames of the form
+ `/dev/tcp/HOST/PORT' and `/dev/udp/HOST/PORT' when used in
+ redirections (*note Redirections::.).
+
`--enable-process-substitution'
This enables process substitution (*note Process Substitution::.)
if the operating system provides the necessary support.
@@ -6709,6 +7222,11 @@ does not provide the necessary support.
strings. See *Note Printing a Prompt::, for a complete list of
prompt string escape sequences.
+`--enable-progcomp'
+ Enable the programmable completion facilities (*note Programmable
+ Completion::.). If Readline is not enabled, this option has no
+ effect.
+
`--enable-readline'
Include support for command-line editing and history with the Bash
version of the Readline library (*note Command Line Editing::.).
@@ -6723,18 +7241,24 @@ does not provide the necessary support.
menus (*note Conditional Constructs::.).
`--enable-usg-echo-default'
+ A synonym for `--enable-xpg-echo-default'.
+
+`--enable-xpg-echo-default'
Make the `echo' builtin expand backslash-escaped characters by
- default, without requiring the `-e' option. This makes the Bash
- `echo' behave more like the System V version.
+ default, without requiring the `-e' option. This sets the default
+ value of the `xpg_echo' shell option to `on', which makes the Bash
+ `echo' behave more like the version specified in the Single Unix
+ Specification, version 2. *Note Bash Builtins::, for a
+ description of the escape sequences that `echo' recognizes.
- The file `config.h.top' contains C Preprocessor `#define' statements
+ The file `config-top.h' contains C Preprocessor `#define' statements
for options which are not settable from `configure'. Some of these are
not meant to be changed; beware of the consequences if you do. Read
the comments associated with each definition for more information about
its effect.

-File: bashref.info, Node: Reporting Bugs, Next: Builtin Index, Prev: Installing Bash, Up: Top
+File: bashref.info, Node: Reporting Bugs, Next: Major Differences From The Bourne Shell, Prev: Installing Bash, Up: Top
Reporting Bugs
**************
@@ -6767,7 +7291,318 @@ it provides for filing a bug report.
Please send all reports concerning this manual to <chet@po.CWRU.Edu>.

-File: bashref.info, Node: Builtin Index, Next: Reserved Word Index, Prev: Reporting Bugs, Up: Top
+File: bashref.info, Node: Major Differences From The Bourne Shell, Next: Builtin Index, Prev: Reporting Bugs, Up: Top
+
+Major Differences From The Bourne Shell
+***************************************
+
+ Bash implements essentially the same grammar, parameter and variable
+expansion, redirection, and quoting as the Bourne Shell. Bash uses the
+POSIX 1003.2 standard as the specification of how these features are to
+be implemented. There are some differences between the traditional
+Bourne shell and Bash; this section quickly details the differences of
+significance. A number of these differences are explained in greater
+depth in previous sections. This section uses the version of `sh'
+included SVR4.2 as the baseline reference.
+
+ * Bash is POSIX-conformant, even where the POSIX specification
+ differs from traditional `sh' behavior.
+
+ * Bash has multi-character invocation options (*note Invoking
+ Bash::.).
+
+ * Bash has command-line editing (*note Command Line Editing::.) and
+ the `bind' builtin.
+
+ * Bash provides a programmable word completion mechanism (*note
+ Programmable Completion::.), and two builtin commands, `complete'
+ and `compgen', to manipulate it.
+
+ * Bash has command history (*note Bash History Facilities::.) and the
+ `history' and `fc' builtins to manipulate it.
+
+ * Bash implements `csh'-like history expansion (*note History
+ Interaction::.).
+
+ * Bash has one-dimensional array variables (*note Arrays::.), and the
+ appropriate variable expansions and assignment syntax to use them.
+ Several of the Bash builtins take options to act on arrays. Bash
+ provides a number of built-in array variables.
+
+ * The `$'...'' quoting syntax, which expands ANSI-C
+ backslash-escaped characters in the text between the single quotes,
+ is supported (*note ANSI-C Quoting::.).
+
+ * Bash supports the `$"..."' quoting syntax to do locale-specific
+ translation of the characters between the double quotes. The
+ `-D', `--dump-strings', and `--dump-po-strings' invocation options
+ list the translatable strings found in a script (*note Locale
+ Translation::.).
+
+ * Bash implements the `!' keyword to negate the return value of a
+ pipeline (*note Pipelines::.). Very useful when an `if' statement
+ needs to act only if a test fails.
+
+ * Bash has the `time' reserved word and command timing (*note
+ Pipelines::.). The display of the timing statistics may be
+ controlled with the `TIMEFORMAT' variable.
+
+ * Bash implements the `for (( EXPR1 ; EXPR2 ; EXPR3 ))' arithmetic
+ for command, similar to the C language (*note Looping
+ Constructs::.).
+
+ * Bash includes the `select' compound command, which allows the
+ generation of simple menus (*note Conditional Constructs::.).
+
+ * Bash includes the `[[' compound command, which makes conditional
+ testing part of the shell grammar (*note Conditional
+ Constructs::.).
+
+ * Bash includes brace expansion (*note Brace Expansion::.) and tilde
+ expansion (*note Tilde Expansion::.).
+
+ * Bash implements command aliases and the `alias' and `unalias'
+ builtins (*note Aliases::.).
+
+ * Bash provides shell arithmetic, the `((' compound command (*note
+ Conditional Constructs::.), and arithmetic expansion (*note Shell
+ Arithmetic::.).
+
+ * Variables present in the shell's initial environment are
+ automatically exported to child processes. The Bourne shell does
+ not normally do this unless the variables are explicitly marked
+ using the `export' command.
+
+ * Bash includes the POSIX pattern removal `%', `#', `%%' and `##'
+ expansions to remove leading or trailing substrings from variable
+ values (*note Shell Parameter Expansion::.).
+
+ * The expansion `${#xx}', which returns the length of `${xx}', is
+ supported (*note Shell Parameter Expansion::.).
+
+ * The expansion `${var:'OFFSET`[:'LENGTH`]}', which expands to the
+ substring of `var''s value of length LENGTH, beginning at OFFSET,
+ is present (*note Shell Parameter Expansion::.).
+
+ * The expansion `${var/[/]'PATTERN`[/'REPLACEMENT`]}', which matches
+ PATTERN and replaces it with REPLACEMENT in the value of `var', is
+ available (*note Shell Parameter Expansion::.).
+
+ * The expansion `${!PREFIX}*' expansion, which expands to the names
+ of all shell variables whose names begin with PREFIX, is available
+ (*note Shell Parameter Expansion::.).
+
+ * Bash has INDIRECT variable expansion using `${!word}' (*note Shell
+ Parameter Expansion::.).
+
+ * Bash can expand positional parameters beyond `$9' using `${NUM}'.
+
+ * The POSIX `$()' form of command substitution is implemented (*note
+ Command Substitution::.), and preferred to the Bourne shell's ```'
+ (which is also implemented for backwards compatibility).
+
+ * Bash has process substitution (*note Process Substitution::.).
+
+ * Bash automatically assigns variables that provide information
+ about the current user (`UID', `EUID', and `GROUPS'), the current
+ host (`HOSTTYPE', `OSTYPE', `MACHTYPE', and `HOSTNAME'), and the
+ instance of Bash that is running (`BASH', `BASH_VERSION', and
+ `BASH_VERSINFO'). *Note Bash Variables::, for details.
+
+ * The `IFS' variable is used to split only the results of expansion,
+ not all words (*note Word Splitting::.). This closes a
+ longstanding shell security hole.
+
+ * Bash implements the full set of POSIX 1003.2 filename expansion
+ operators, including CHARACTER CLASSES, EQUIVALENCE CLASSES, and
+ COLLATING SYMBOLS (*note Filename Expansion::.).
+
+ * Bash implements extended pattern matching features when the
+ `extglob' shell option is enabled (*note Pattern Matching::.).
+
+ * It is possible to have a variable and a function with the same
+ name; `sh' does not separate the two name spaces.
+
+ * Bash functions are permitted to have local variables using the
+ `local' builtin, and thus useful recursive functions may be written
+ (*note Bash Builtins::.).
+
+ * Variable assignments preceding commands affect only that command,
+ even builtins and functions (*note Environment::.). In `sh', all
+ variable assignments preceding commands are global unless the
+ command is executed from the file system.
+
+ * Bash performs filename expansion on filenames specified as operands
+ to input and output redirection operators (*note Redirections::.).
+
+ * Bash contains the `<>' redirection operator, allowing a file to be
+ opened for both reading and writing, and the `&>' redirection
+ operator, for directing standard output and standard error to the
+ same file (*note Redirections::.).
+
+ * Bash treats a number of filenames specially when they are used in
+ redirection operators (*note Redirections::.).
+
+ * Bash can open network connections to arbitrary machines and
+ services with the redirection operators (*note Redirections::.).
+
+ * The `noclobber' option is available to avoid overwriting existing
+ files with output redirection (*note The Set Builtin::.). The
+ `>|' redirection operator may be used to override `noclobber'.
+
+ * The Bash `cd' and `pwd' builtins (*note Bourne Shell Builtins::.)
+ each take `-L' and `-P' builtins to switch between logical and
+ physical modes.
+
+ * Bash allows a function to override a builtin with the same name,
+ and provides access to that builtin's functionality within the
+ function via the `builtin' and `command' builtins (*note Bash
+ Builtins::.).
+
+ * The `command' builtin allows selective disabling of functions when
+ command lookup is performed (*note Bash Builtins::.).
+
+ * Individual builtins may be enabled or disabled using the `enable'
+ builtin (*note Bash Builtins::.).
+
+ * The Bash `exec' builtin takes additional options that allow users
+ to control the contents of the environment passed to the executed
+ command, and what the zeroth argument to the command is to be
+ (*note Bourne Shell Builtins::.).
+
+ * Shell functions may be exported to children via the environment
+ using `export -f' (*note Shell Functions::.).
+
+ * The Bash `export', `readonly', and `declare' builtins can take a
+ `-f' option to act on shell functions, a `-p' option to display
+ variables with various attributes set in a format that can be used
+ as shell input, a `-n' option to remove various variable
+ attributes, and `name=value' arguments to set variable attributes
+ and values simultaneously.
+
+ * The Bash `hash' builtin allows a name to be associated with an
+ arbitrary filename, even when that filename cannot be found by
+ searching the `$PATH', using `hash -p' (*note Bourne Shell
+ Builtins::.).
+
+ * Bash includes a `help' builtin for quick reference to shell
+ facilities (*note Bash Builtins::.).
+
+ * The `printf' builtin is available to display formatted output
+ (*note Bash Builtins::.).
+
+ * The Bash `read' builtin (*note Bash Builtins::.) will read a line
+ ending in `\' with the `-r' option, and will use the `REPLY'
+ variable as a default if no non-option arguments are supplied.
+ The Bash `read' builtin also accepts a prompt string with the `-p'
+ option and will use Readline to obtain the line when given the
+ `-e' option. The `read' builtin also has additional options to
+ control input: the `-s' option will turn off echoing of input
+ characters as they are read, the `-t' option will allow `read' to
+ time out if input does not arrive within a specified number of
+ seconds, the `-n' option will allow reading only a specified
+ number of characters rather than a full line, and the `-d' option
+ will read until a particular character rather than newline.
+
+ * The `return' builtin may be used to abort execution of scripts
+ executed with the `.' or `source' builtins (*note Bourne Shell
+ Builtins::.).
+
+ * Bash includes the `shopt' builtin, for finer control of shell
+ optional capabilities (*note Bash Builtins::.).
+
+ * Bash has much more optional behavior controllable with the `set'
+ builtin (*note The Set Builtin::.).
+
+ * The `test' builtin (*note Bourne Shell Builtins::.) is slightly
+ different, as it implements the POSIX algorithm, which specifies
+ the behavior based on the number of arguments.
+
+ * The `trap' builtin (*note Bourne Shell Builtins::.) allows a
+ `DEBUG' pseudo-signal specification, similar to `EXIT'. Commands
+ specified with a `DEBUG' trap are executed after every simple
+ command. The `DEBUG' trap is not inherited by shell functions.
+
+ * The Bash `type' builtin is more extensive and gives more
+ information about the names it finds (*note Bash Builtins::.).
+
+ * The Bash `umask' builtin permits a `-p' option to cause the output
+ to be displayed in the form of a `umask' command that may be
+ reused as input (*note Bourne Shell Builtins::.).
+
+ * Bash implements a `csh'-like directory stack, and provides the
+ `pushd', `popd', and `dirs' builtins to manipulate it (*note The
+ Directory Stack::.). Bash also makes the directory stack visible
+ as the value of the `DIRSTACK' shell variable.
+
+ * Bash interprets special backslash-escaped characters in the prompt
+ strings when interactive (*note Printing a Prompt::.).
+
+ * The Bash restricted mode is more useful (*note The Restricted
+ Shell::.); the SVR4.2 shell restricted mode is too limited.
+
+ * The `disown' builtin can remove a job from the internal shell job
+ table (*note Job Control Builtins::.) or suppress the sending of
+ `SIGHUP' to a job when the shell exits as the result of a `SIGHUP'.
+
+ * The SVR4.2 shell has two privilege-related builtins (`mldmode' and
+ `priv') not present in Bash.
+
+ * Bash does not have the `stop' or `newgrp' builtins.
+
+ * Bash does not use the `SHACCT' variable or perform shell
+ accounting.
+
+ * The SVR4.2 `sh' uses a `TIMEOUT' variable like Bash uses `TMOUT'.
+
+More features unique to Bash may be found in *Note Bash Features::.
+
+Implementation Differences From The SVR4.2 Shell
+================================================
+
+ Since Bash is a completely new implementation, it does not suffer
+from many of the limitations of the SVR4.2 shell. For instance:
+
+ * Bash does not fork a subshell when redirecting into or out of a
+ shell control structure such as an `if' or `while' statement.
+
+ * Bash does not allow unbalanced quotes. The SVR4.2 shell will
+ silently insert a needed closing quote at `EOF' under certain
+ circumstances. This can be the cause of some hard-to-find errors.
+
+ * The SVR4.2 shell uses a baroque memory management scheme based on
+ trapping `SIGSEGV'. If the shell is started from a process with
+ `SIGSEGV' blocked (e.g., by using the `system()' C library
+ function call), it misbehaves badly.
+
+ * In a questionable attempt at security, the SVR4.2 shell, when
+ invoked without the `-p' option, will alter its real and effective
+ UID and GID if they are less than some magic threshold value,
+ commonly 100. This can lead to unexpected results.
+
+ * The SVR4.2 shell does not allow users to trap `SIGSEGV',
+ `SIGALRM', or `SIGCHLD'.
+
+ * The SVR4.2 shell does not allow the `IFS', `MAILCHECK', `PATH',
+ `PS1', or `PS2' variables to be unset.
+
+ * The SVR4.2 shell treats `^' as the undocumented equivalent of `|'.
+
+ * Bash allows multiple option arguments when it is invoked (`-x -v');
+ the SVR4.2 shell allows only one option argument (`-xv'). In
+ fact, some versions of the shell dump core if the second argument
+ begins with a `-'.
+
+ * The SVR4.2 shell exits a script if any builtin fails; Bash exits a
+ script only if one of the POSIX 1003.2 special builtins fails, and
+ only for certain failures, as enumerated in the POSIX 1003.2
+ standard.
+
+ * The SVR4.2 shell behaves differently when invoked as `jsh' (it
+ turns on job control).
+
+
+File: bashref.info, Node: Builtin Index, Next: Reserved Word Index, Prev: Major Differences From The Bourne Shell, Up: Top
Index of Shell Builtin Commands
*******************************
@@ -6777,16 +7612,18 @@ Index of Shell Builtin Commands
* .: Bourne Shell Builtins.
* :: Bourne Shell Builtins.
* [: Bourne Shell Builtins.
-* alias: Alias Builtins.
+* alias: Bash Builtins.
* bg: Job Control Builtins.
* bind: Bash Builtins.
* break: Bourne Shell Builtins.
* builtin: Bash Builtins.
* cd: Bourne Shell Builtins.
* command: Bash Builtins.
+* compgen: Programmable Completion Builtins.
+* complete: Programmable Completion Builtins.
* continue: Bourne Shell Builtins.
* declare: Bash Builtins.
-* dirs: The Directory Stack.
+* dirs: Directory Stack Builtins.
* disown: Job Control Builtins.
* echo: Bash Builtins.
* enable: Bash Builtins.
@@ -6805,9 +7642,9 @@ Index of Shell Builtin Commands
* let: Bash Builtins.
* local: Bash Builtins.
* logout: Bash Builtins.
-* popd: The Directory Stack.
+* popd: Directory Stack Builtins.
* printf: Bash Builtins.
-* pushd: The Directory Stack.
+* pushd: Directory Stack Builtins.
* pwd: Bourne Shell Builtins.
* read: Bash Builtins.
* readonly: Bourne Shell Builtins.
@@ -6824,15 +7661,15 @@ Index of Shell Builtin Commands
* typeset: Bash Builtins.
* ulimit: Bash Builtins.
* umask: Bourne Shell Builtins.
-* unalias: Alias Builtins.
+* unalias: Bash Builtins.
* unset: Bourne Shell Builtins.
* wait: Job Control Builtins.

File: bashref.info, Node: Reserved Word Index, Next: Variable Index, Prev: Builtin Index, Up: Top
-Shell Reserved Words
-********************
+Index of Shell Reserved Words
+*****************************
* Menu:
@@ -6883,7 +7720,12 @@ Parameter and Variable Index
* bell-style: Readline Init File Syntax.
* CDPATH: Bourne Shell Variables.
* comment-begin: Readline Init File Syntax.
+* COMP_CWORD: Bash Variables.
+* COMP_LINE: Bash Variables.
+* COMP_POINT: Bash Variables.
+* COMP_WORDS: Bash Variables.
* completion-query-items: Readline Init File Syntax.
+* COMPREPLY: Bash Variables.
* convert-meta: Readline Init File Syntax.
* DIRSTACK: Bash Variables.
* disable-completion: Readline Init File Syntax.
@@ -6893,6 +7735,7 @@ Parameter and Variable Index
* expand-tilde: Readline Init File Syntax.
* FCEDIT: Bash Variables.
* FIGNORE: Bash Variables.
+* FUNCNAME: Bash Variables.
* GLOBIGNORE: Bash Variables.
* GROUPS: Bash Variables.
* histchars: Bash Variables.
@@ -6918,6 +7761,7 @@ Parameter and Variable Index
* LC_COLLATE: Bash Variables.
* LC_CTYPE: Bash Variables.
* LC_MESSAGES: Bash Variables.
+* LC_NUMERIC: Bash Variables.
* LINENO: Bash Variables.
* MACHTYPE: Bash Variables.
* MAIL: Bourne Shell Variables.
@@ -7063,6 +7907,7 @@ Concept Index
* commands, shell: Shell Commands.
* commands, simple: Simple Commands.
* comments, shell: Comments.
+* completion builtins: Programmable Completion Builtins.
* configuration: Basic Installation.
* control operator: Definitions.
* directory stack: The Directory Stack.
@@ -7091,16 +7936,16 @@ Concept Index
* history events: Event Designators.
* history expansion: History Interaction.
* history list: Bash History Facilities.
-* History, how to use: Job Control Variables.
+* History, how to use: Programmable Completion Builtins.
* identifier: Definitions.
* initialization file, readline: Readline Init File.
* installation: Basic Installation.
* interaction, readline: Readline Interaction.
-* interactive shell <1>: Is This Shell Interactive?.
+* interactive shell <1>: Interactive Shells.
* interactive shell: Invoking Bash.
* job: Definitions.
-* job control <1>: Definitions.
-* job control: Job Control Basics.
+* job control <1>: Job Control Basics.
+* job control: Definitions.
* kill ring: Readline Killing Commands.
* killing text: Readline Killing Commands.
* localization: Locale Translation.
@@ -7121,10 +7966,11 @@ Concept Index
* process group: Definitions.
* process group ID: Definitions.
* process substitution: Process Substitution.
+* programmable completion: Programmable Completion.
* prompting: Printing a Prompt.
* quoting: Quoting.
* quoting, ANSI: ANSI-C Quoting.
-* Readline, how to use: Modifiers.
+* Readline, how to use: Job Control Variables.
* redirection: Redirections.
* reserved word: Definitions.
* restricted shell: The Restricted Shell.
@@ -7133,8 +7979,10 @@ Concept Index
* shell function: Shell Functions.
* shell script: Shell Scripts.
* shell variable: Shell Parameters.
+* shell, interactive: Interactive Shells.
* signal: Definitions.
* signal handling: Signals.
+* special builtin <1>: Special Builtins.
* special builtin: Definitions.
* startup files: Bash Startup Files.
* suspending jobs: Job Control Basics.
@@ -7148,120 +7996,126 @@ Concept Index

Tag Table:
-Node: Top1187
-Node: Introduction3146
-Node: What is Bash?3371
-Node: What is a shell?4465
-Node: Definitions6487
-Node: Basic Shell Features9148
-Node: Shell Syntax10371
-Node: Shell Operation10660
-Node: Quoting11954
-Node: Escape Character12979
-Node: Single Quotes13451
-Node: Double Quotes13780
-Node: ANSI-C Quoting14678
-Node: Locale Translation15547
-Node: Comments15968
-Node: Shell Commands16582
-Node: Simple Commands17093
-Node: Pipelines17652
-Node: Lists19179
-Node: Looping Constructs20634
-Node: Conditional Constructs22239
-Node: Command Grouping28177
-Node: Shell Functions29554
-Node: Shell Parameters31518
-Node: Positional Parameters32844
-Node: Special Parameters33593
-Node: Shell Expansions36214
-Node: Brace Expansion38137
-Node: Tilde Expansion39698
-Node: Shell Parameter Expansion42030
-Node: Command Substitution48426
-Node: Arithmetic Expansion49700
-Node: Process Substitution50545
-Node: Word Splitting51439
-Node: Filename Expansion52891
-Node: Pattern Matching54855
-Node: Quote Removal57244
-Node: Redirections57530
-Node: Executing Commands63600
-Node: Simple Command Expansion64267
-Node: Command Search and Execution66190
-Node: Command Execution Environment68193
-Node: Environment70647
-Node: Exit Status72304
-Node: Signals73501
-Node: Shell Scripts75396
-Node: Bourne Shell Features77432
-Node: Bourne Shell Builtins78162
-Node: Bourne Shell Variables92273
-Node: Other Bourne Shell Features93978
-Node: Major Differences From The Bourne Shell94721
-Node: Bash Features106910
-Node: Invoking Bash108013
-Node: Bash Startup Files112198
-Node: Is This Shell Interactive?116342
-Node: Bash Builtins117313
-Node: The Set Builtin138717
-Node: Bash Conditional Expressions145533
-Node: Bash Variables148666
-Node: Shell Arithmetic161096
-Node: Aliases163144
-Node: Alias Builtins165719
-Node: Arrays166335
-Node: The Directory Stack169356
-Node: Printing a Prompt172706
-Node: The Restricted Shell174369
-Node: Bash POSIX Mode175730
-Node: Job Control179891
-Node: Job Control Basics180357
-Node: Job Control Builtins184556
-Node: Job Control Variables188848
-Node: Using History Interactively189998
-Node: Bash History Facilities190677
-Node: Bash History Builtins193018
-Node: History Interaction196386
-Node: Event Designators198938
-Node: Word Designators199865
-Node: Modifiers201114
-Node: Command Line Editing202431
-Node: Introduction and Notation203091
-Node: Readline Interaction204129
-Node: Readline Bare Essentials205321
-Node: Readline Movement Commands206861
-Node: Readline Killing Commands207826
-Node: Readline Arguments209541
-Node: Searching210515
-Node: Readline Init File212263
-Node: Readline Init File Syntax213302
-Node: Conditional Init Constructs222508
-Node: Sample Init File224946
-Node: Bindable Readline Commands228115
-Node: Commands For Moving228865
-Node: Commands For History229712
-Node: Commands For Text232541
-Node: Commands For Killing234508
-Node: Numeric Arguments236657
-Node: Commands For Completion237783
-Node: Keyboard Macros241615
-Node: Miscellaneous Commands242173
-Node: Readline vi Mode246493
-Node: Installing Bash247371
-Node: Basic Installation248448
-Node: Compilers and Options251358
-Node: Compiling For Multiple Architectures252092
-Node: Installation Names253749
-Node: Specifying the System Type254474
-Node: Sharing Defaults255178
-Node: Operation Controls255843
-Node: Optional Features256748
-Node: Reporting Bugs263158
-Node: Builtin Index264229
-Node: Reserved Word Index267632
-Node: Variable Index269090
-Node: Function Index274363
-Node: Concept Index278853
+Node: Top1185
+Node: Introduction3316
+Node: What is Bash?3541
+Node: What is a shell?4642
+Node: Definitions6876
+Node: Basic Shell Features9542
+Node: Shell Syntax10766
+Node: Shell Operation11790
+Node: Quoting13085
+Node: Escape Character14345
+Node: Single Quotes14817
+Node: Double Quotes15152
+Node: ANSI-C Quoting16055
+Node: Locale Translation16957
+Node: Comments17378
+Node: Shell Commands17984
+Node: Simple Commands18865
+Node: Pipelines19488
+Node: Lists21015
+Node: Looping Constructs22529
+Node: Conditional Constructs24976
+Node: Command Grouping30918
+Node: Shell Functions32295
+Node: Shell Parameters34833
+Node: Positional Parameters36159
+Node: Special Parameters37052
+Node: Shell Expansions39711
+Node: Brace Expansion41635
+Node: Tilde Expansion43305
+Node: Shell Parameter Expansion45637
+Node: Command Substitution52439
+Node: Arithmetic Expansion53761
+Node: Process Substitution54606
+Node: Word Splitting55643
+Node: Filename Expansion57095
+Node: Pattern Matching59055
+Node: Quote Removal61450
+Node: Redirections61736
+Node: Executing Commands68607
+Node: Simple Command Expansion69274
+Node: Command Search and Execution71197
+Node: Command Execution Environment73194
+Node: Environment75648
+Node: Exit Status77300
+Node: Signals78497
+Node: Shell Scripts80392
+Node: Shell Builtin Commands82776
+Node: Bourne Shell Builtins84211
+Node: Bash Builtins99107
+Node: The Set Builtin123146
+Node: Special Builtins129959
+Node: Shell Variables130931
+Node: Bourne Shell Variables131367
+Node: Bash Variables133147
+Node: Bash Features147888
+Node: Invoking Bash148770
+Node: Bash Startup Files153441
+Node: Interactive Shells158148
+Node: What is an Interactive Shell?158550
+Node: Is this Shell Interactive?159185
+Node: Interactive Shell Behavior159991
+Node: Bash Conditional Expressions163279
+Node: Shell Arithmetic166574
+Node: Aliases169005
+Node: Arrays171510
+Node: The Directory Stack174530
+Node: Directory Stack Builtins175236
+Node: Printing a Prompt178114
+Node: The Restricted Shell180486
+Node: Bash POSIX Mode181964
+Node: Job Control186258
+Node: Job Control Basics186724
+Node: Job Control Builtins190939
+Node: Job Control Variables195234
+Node: Command Line Editing196384
+Node: Introduction and Notation197382
+Node: Readline Interaction198999
+Node: Readline Bare Essentials200191
+Node: Readline Movement Commands201971
+Node: Readline Killing Commands202927
+Node: Readline Arguments204832
+Node: Searching205806
+Node: Readline Init File207685
+Node: Readline Init File Syntax208739
+Node: Conditional Init Constructs218285
+Node: Sample Init File220723
+Node: Bindable Readline Commands223892
+Node: Commands For Moving225085
+Node: Commands For History225933
+Node: Commands For Text228727
+Node: Commands For Killing230678
+Node: Numeric Arguments232644
+Node: Commands For Completion233770
+Node: Keyboard Macros237602
+Node: Miscellaneous Commands238160
+Node: Readline vi Mode242534
+Node: Programmable Completion243444
+Node: Programmable Completion Builtins248120
+Node: Using History Interactively254226
+Node: Bash History Facilities254905
+Node: Bash History Builtins257466
+Node: History Interaction261038
+Node: Event Designators263590
+Node: Word Designators264517
+Node: Modifiers266146
+Node: Installing Bash267463
+Node: Basic Installation268605
+Node: Compilers and Options271723
+Node: Compiling For Multiple Architectures272457
+Node: Installation Names274114
+Node: Specifying the System Type274837
+Node: Sharing Defaults275544
+Node: Operation Controls276209
+Node: Optional Features277160
+Node: Reporting Bugs284581
+Node: Major Differences From The Bourne Shell285678
+Node: Builtin Index299726
+Node: Reserved Word Index303317
+Node: Variable Index304793
+Node: Function Index310465
+Node: Concept Index314955

End Tag Table