Imported from ../bash-2.03.tar.gz.

This commit is contained in:
Jari Aalto 1999-02-19 17:11:39 +00:00
commit b72432fdcc
191 changed files with 10113 additions and 3553 deletions

306
doc/FAQ
View file

@ -1,4 +1,4 @@
This is the Bash FAQ, version 2.13, for Bash version 2.02.
This is the Bash FAQ, version 3.0, for Bash version 2.03.
This document contains a set of frequently-asked questions concerning
Bash, the GNU Bourne-Again Shell. Bash is a freely-available command
@ -20,87 +20,87 @@ Contents:
Section A: The Basics
1) What is it?
2) What's the latest version?
3) Where can I get it?
4) On what machines will bash run?
5) Will bash run on operating systems other than Unix?
6) How can I build bash with gcc?
7) How can I make bash my login shell?
8) I just changed my login shell to bash, and now I can't FTP into my
machine. Why not?
9) What's the `POSIX 1003.2 standard'?
10) What is the bash `posix mode'?
A1) What is it?
A2) What's the latest version?
A3) Where can I get it?
A4) On what machines will bash run?
A5) Will bash run on operating systems other than Unix?
A6) How can I build bash with gcc?
A7) How can I make bash my login shell?
A8) I just changed my login shell to bash, and now I can't FTP into my
machine. Why not?
A9) What's the `POSIX 1003.2 standard'?
A10) What is the bash `posix mode'?
Section B: The latest version
11) What's new in version 2.02?
12) Are there any user-visible incompatibilities between bash-2.02 and
B1) What's new in version 2.03?
B2) Are there any user-visible incompatibilities between bash-2.03 and
bash-1.14.7?
Section C: Differences from other Unix shells
13) How does bash differ from sh, the Bourne shell?
14) How does bash differ from the Korn shell, version ksh88?
15) Which new features in ksh-93 are not in bash, and which are?
C1) How does bash differ from sh, the Bourne shell?
C2) How does bash differ from the Korn shell, version ksh88?
C3) Which new features in ksh-93 are not in bash, and which are?
Section D: Why does bash do some things differently than other Unix shells?
16) Why does bash run a different version of `command' than
D1) Why does bash run a different version of `command' than
`which command' says it will?
17) Why doesn't bash treat brace expansions exactly like csh?
18) Why doesn't bash have csh variable modifiers?
19) How can I make my csh aliases work when I convert to bash?
20) How can I pipe standard output and standard error from one command to
D2) Why doesn't bash treat brace expansions exactly like csh?
D3) Why doesn't bash have csh variable modifiers?
D4) How can I make my csh aliases work when I convert to bash?
D5) How can I pipe standard output and standard error from one command to
another, like csh does with `|&'?
21) Now that I've converted from ksh to bash, are there equivalents to
D6) Now that I've converted from ksh to bash, are there equivalents to
ksh features like autoloaded functions and the `whence' command?
Section E: How can I get bash to do certain things, and why does bash do
things the way it does?
22) Why is the bash builtin `test' slightly different from /bin/test?
23) Why does bash sometimes say `Broken pipe'?
24) How can I get bash to read and display eight-bit characters?
25) How do I write a function `x' to replace builtin command `x', but
E1) Why is the bash builtin `test' slightly different from /bin/test?
E2) Why does bash sometimes say `Broken pipe'?
E3) How can I get bash to read and display eight-bit characters?
E4) How do I write a function `x' to replace builtin command `x', but
still invoke the command from within the function?
26) When I have terminal escape sequences in my prompt, why does bash
E5) When I have terminal escape sequences in my prompt, why does bash
wrap lines at the wrong column?
27) How can I find the value of a shell variable whose name is the value
E6) How can I find the value of a shell variable whose name is the value
of another shell variable?
28) If I pipe the output of a command into `read variable', why doesn't
E7) If I pipe the output of a command into `read variable', why doesn't
the output show up in $variable when the read command finishes?
29) I have a bunch of shell scripts that use backslash-escaped characters
E8) I have a bunch of shell scripts that use backslash-escaped characters
in arguments to `echo'. Bash doesn't interpret these characters. Why
not, and how can I make it understand them?
30) Why doesn't a while or for loop get suspended when I type ^Z?
31) How can I make the bash `time' reserved word print timing output that
looks like the output from my system's /usr/bin/time?
E9) Why doesn't a while or for loop get suspended when I type ^Z?
E10) How can I make the bash `time' reserved word print timing output that
looks like the output from my system's /usr/bin/time?
Section F: Things to watch out for on certain Unix versions
32) Why can't I use command line editing in my `cmdtool'?
33) I built bash on Solaris 2. Why do globbing expansions and filename
F1) Why can't I use command line editing in my `cmdtool'?
F2) I built bash on Solaris 2. Why do globbing expansions and filename
completion chop off the first few characters of each filename?
34) Why does bash dump core after I interrupt username completion or
F3) Why does bash dump core after I interrupt username completion or
`~user' tilde expansion on a machine running NIS?
35) I'm running SVR4.2. Why is the line erased every time I type `@'?
36) Why does bash report syntax errors when my C News scripts use a
F4) I'm running SVR4.2. Why is the line erased every time I type `@'?
F5) Why does bash report syntax errors when my C News scripts use a
redirection before a subshell command?
Section G: Where do I go from here?
37) How do I report bugs in bash, and where should I look for fixes and
G1) How do I report bugs in bash, and where should I look for fixes and
advice?
38) What kind of bash documentation is there?
39) What's coming in future versions?
40) What's on the bash `wish list'?
41) When will the next release appear?
G2) What kind of bash documentation is there?
G3) What's coming in future versions?
G4) What's on the bash `wish list'?
G5) When will the next release appear?
----------
Section A: The Basics
1) What is it?
A1) What is it?
Bash is a Unix command interpreter (shell). It is an implementation of
the Posix 1003.2 shell standard, and resembles the Korn and System V
@ -118,26 +118,26 @@ Bash was originally written by Brian Fox of the Free Software
Foundation. The current developer and maintainer is Chet Ramey
of Case Western Reserve University.
2) What's the latest version?
A2) What's the latest version?
The latest version is 2.02, first made available on Monday, 20 April, 1998.
The latest version is 2.03, first made available on Friday, 19 Feburary 1999.
3) Where can I get it?
A3) Where can I get it?
Bash is the GNU project's shell, and so is available from the
master GNU archive site, prep.ai.mit.edu, and its mirrors. The
master GNU archive site, ftp.gnu.org, and its mirrors. The
latest version is also available for FTP from ftp.cwru.edu.
The following URLs tell how to get version 2.02:
The following URLs tell how to get version 2.03:
ftp://prep.ai.mit.edu/pub/gnu/bash-2.02.tar.gz
ftp://ftp.cwru.edu/pub/bash/bash-2.02.tar.gz
ftp://ftp.gnu.org/pub/gnu/bash-2.03.tar.gz
ftp://ftp.cwru.edu/pub/bash/bash-2.03.tar.gz
Formatted versions of the documentation are available with the URLs:
ftp://prep.ai.mit.edu/pub/gnu/bash-doc-2.02.tar.gz
ftp://ftp.cwru.edu/pub/bash/bash-doc-2.02.tar.gz
ftp://ftp.gnu.org/pub/gnu/bash-doc-2.03.tar.gz
ftp://ftp.cwru.edu/pub/bash/bash-doc-2.03.tar.gz
4) On what machines will bash run?
A4) On what machines will bash run?
Bash has been ported to nearly every version of UNIX. All you
should have to do to build it on a machine for which a port
@ -147,10 +147,10 @@ itself accordingly, using a script created by GNU autoconf.
More information appears in the file `INSTALL' in the distribution.
5) Will bash run on operating systems other than Unix?
A5) Will bash run on operating systems other than Unix?
Configuration specifics for Unix-like systems such as QNX and
LynxOS are included in the distribution. Bash-2.02 should
LynxOS are included in the distribution. Bash-2.03 should
compile and run on Minix 2.0 (patches were contributed), but I
don't believe anyone has built bash-2.x on earlier Minix versions
yet.
@ -162,12 +162,12 @@ project. For more information about the project, look at the URL
http://www.cygnus.com/misc/gnu-win32
Cygnus has ported bash-1.14.7, and their port is part of the current
gnu-win32 release. Cygnus has also done a port of bash-2.01 to the
GNU-Win32 environment, and it should be available as part of their next
release.
Cygnus originally ported bash-1.14.7, and that port was part of their
early GNU-Win32 releases. Cygnus has also done a port of bash-2.01 to the
GNU-Win32 environment, and it is available as part of their current
release. (They may have upgraded by now.)
Bash-2.02 should require no local Cygnus changes to build and run under
Bash-2.03 should require no local Cygnus changes to build and run under
GNU-WIN32.
The Cygnus port works only on Intel machines. There is a port of bash
@ -175,9 +175,19 @@ The Cygnus port works only on Intel machines. There is a port of bash
ftp://ftp.gnustep.org//pub/win32/bash-alpha-nt-1.01.tar.gz
Softway Systems has ported bash-2.01.1 to their Interix (nee OpenNT)
Softway Systems has ported bash-2.01 to their Interix (nee OpenNT)
system, a Unix subsystem for NT that replaces the Microsoft POSIX
subsystem. Check out http://www.interix.com for more information.
Some support for Interix has been incorporated into bash, beginning
with Bash-2.03. It should be easier to build bash on Interix now,
but Interix users should fetch
ftp://ftp.interix.com/pub/tw/unsup/bash.diffs.tar.gz
and read the README.OpenNT file in that archive. It will detail the
arguments configure needs to build on Interix. A configure cache
file for Interix is in the bash distribution in cross-build/opennt.cache;
copy that to `config.cache' before starting configure.
D. J. Delorie has ported bash-1.14.7 to run under MS-DOS, as part of
the DJGPP project. For more information on the project, see
@ -201,12 +211,12 @@ ftp://hobbes.nmsu.edu/pub/os2/util/shell/bash-2.0(253).zip
I haven't looked at either, but the second appears to be a binary-only
distribution. Beware.
6) How can I build bash with gcc?
A6) How can I build bash with gcc?
Bash configures to use gcc by default if it is available. Read the
file INSTALL in the distribution for more information.
7) How can I make bash my login shell?
A7) How can I make bash my login shell?
Some machines let you use `chsh' to change your login shell. Other
systems use `passwd -s' or `passwd -e'. If one of these works for
@ -252,7 +262,7 @@ This will cause login shells to replace themselves with bash running as
a login shell. Once you have this working, you can copy your initialization
code from ~/.profile to ~/.bash_profile.
8) I just changed my login shell to bash, and now I can't FTP into my
A8) I just changed my login shell to bash, and now I can't FTP into my
machine. Why not?
You must add the full pathname to bash to the file /etc/shells. As
@ -262,7 +272,7 @@ this before you can make bash your login shell.
Most versions of ftpd use this file to prohibit `special' users
such as `uucp' and `news' from using FTP.
9) What's the `POSIX 1003.2 standard'?
A9) What's the `POSIX 1003.2 standard'?
POSIX is a name originally coined by Richard Stallman for a
family of open system standards based on UNIX. There are a
@ -297,7 +307,7 @@ line editing. Only vi-style line editing commands have been
standardized; emacs editing commands were left out due to
objections.
10) What is the bash `posix mode'?
A10) What is the bash `posix mode'?
Although bash is an implementation of the POSIX.2 shell
specification, there are areas where the bash default behavior
@ -314,9 +324,29 @@ Reference Manual.
Section B: The latest version
11) What's new in version 2.02?
B1) What's new in version 2.03?
Bash-2.02 has a number of new features. Here's a short list:
Bash-2.03 has a very few new features, in keeping with the convention
that odd-numbered releases provide mainly bug fixes. A number of new
features were added to Readline, mostly at the request of the Cygnus
folks.
a new shopt option, `restricted_shell', so that startup files can test
whether or not the shell was started in restricted mode
filename generation is now performed on the words between ( and ) in
compound array assignments (this is really a bug fix)
OLDPWD is now auto-exported, as POSIX.2 requires
ENV and BASH_ENV are read-only variables in a restricted shell
Bash may now be linked against an already-installed Readline library,
as long as the Readline library is version 4 or newer
All shells begun with the `--login' option will source the login shell
startup files, even if the shell is not interactive
There are lots of changes to the version of the Readline library released
along with Bash-2.03. For a complete list of the changes, read the file
CHANGES in the Bash-2.03 distribution.
Bash-2.02 contained the following new features:
a new version of malloc (based on the old GNU malloc code in previous
bash versions) that is more page-oriented, more conservative
@ -382,15 +412,15 @@ grammar tighter and smaller (66 reduce-reduce conflicts gone)
lots of code now smaller and faster
test suite greatly expanded
12) Are there any user-visible incompatibilities between bash-2.02 and
B2) Are there any user-visible incompatibilities between bash-2.03 and
bash-1.14.7?
There are a few incompatibilities between version 1.14.7 and version 2.02.
They are detailed in the file COMPAT in the bash-2.02 distribution.
There are a few incompatibilities between version 1.14.7 and version 2.03.
They are detailed in the file COMPAT in the bash-2.03 distribution.
Section C: Differences from other Unix shells
13) How does bash differ from sh, the Bourne shell?
C1) How does bash differ from sh, the Bourne shell?
This is a non-comprehensive list of features that differentiate bash
from the SVR4.2 shell. The bash manual page explains these more
@ -481,11 +511,12 @@ Implementation differences:
bash allows multiple option arguments when invoked (e.g. -x -v);
sh allows only a single option argument (`sh -x -v' attempts
to open a file named `-v', and, on SunOS 4.1.4, dumps core.
On Solaris 2, sh goes into an infinite loop.)
On Solaris 2.4 and earlier versions, sh goes into an infinite
loop.)
sh exits a script if any builtin fails; bash exits only if one of
the POSIX.2 `special' builtins fails
14) How does bash differ from the Korn shell, version ksh88?
C2) How does bash differ from the Korn shell, version ksh88?
Things bash has or uses that ksh88 does not:
long invocation options
@ -541,9 +572,9 @@ Implementation differences:
bash has exported functions
bash command search finds functions before builtins
15) Which new features in ksh-93 are not in bash, and which are?
C3) Which new features in ksh-93 are not in bash, and which are?
New things in ksh-93 not in bash-2.02:
New things in ksh-93 not in bash-2.03:
associative arrays
floating point arithmetic
++, --, comma arithmetic operators
@ -564,7 +595,7 @@ New things in ksh-93 not in bash-2.02:
read -t/-d
`.' can execute shell functions
New things in ksh-93 present in bash-2.02:
New things in ksh-93 present in bash-2.03:
?: arithmetic operator
expansions: ${!param}, ${param:offset[:len]}, ${param/pat[/str]}
compound array assignment
@ -588,16 +619,37 @@ New things in ksh-93 present in bash-2.02:
Section D: Why does bash do some things differently than other Unix shells?
16) Why does bash run a different version of `command' than
D1) Why does bash run a different version of `command' than
`which command' says it will?
`which' is actually a csh script that assumes you're running csh.
It reads the csh startup files from your home directory and uses
those to determine which `command' will be invoked. Since bash
doesn't use any of those startup files, there's a good chance
that your bash environment differs from your csh environment.
On many systems, `which' is actually a csh script that assumes
you're running csh. In tcsh, `which' and its cousin `where'
are builtins. On other Unix systems, `which' is a perl script
that uses the PATH environment variable.
17) Why doesn't bash treat brace expansions exactly like csh?
The csh script version reads the csh startup files from your
home directory and uses those to determine which `command' will
be invoked. Since bash doesn't use any of those startup files,
there's a good chance that your bash environment differs from
your csh environment. The bash `type' builtin does everything
`which' does, and will report correct results for the running
shell. If you're really wedded to the name `which', try adding
the following function definition to your .bashrc:
which()
{
builtin type -p "$@"
}
If you're moving from tcsh and would like to bring `where' along
as well, use this function:
where()
{
builtin type -a "$@"
}
D2) Why doesn't bash treat brace expansions exactly like csh?
The only difference between bash and csh brace expansion is that
bash requires a brace expression to contain at least one unquoted
@ -608,7 +660,7 @@ compatibility.
Bash, ksh, zsh, and pd-ksh all implement brace expansion this way.
18) Why doesn't bash have csh variable modifiers?
D3) Why doesn't bash have csh variable modifiers?
Posix has specified a more powerful, albeit somewhat more cryptic,
mechanism cribbed from ksh, and bash implements it.
@ -663,7 +715,7 @@ Given
$b:e ${b##*.} xxx
19) How can I make my csh aliases work when I convert to bash?
D4) How can I make my csh aliases work when I convert to bash?
Bash uses a different syntax to support aliases than csh does.
The details can be found in the documentation. We have provided
@ -706,7 +758,7 @@ simply `cshtobash' to convert your normal interactive
environment, or as `cshtobash ~/.login' to convert your login
environment.
20) How can I pipe standard output and standard error from one command to
D5) How can I pipe standard output and standard error from one command to
another, like csh does with `|&'?
Use
@ -716,7 +768,7 @@ The key is to remember that piping is performed before redirection, so
file descriptor 1 points to the pipe when it is duplicated onto file
descriptor 2.
21) Now that I've converted from ksh to bash, are there equivalents to
D6) Now that I've converted from ksh to bash, are there equivalents to
ksh features like autoloaded functions and the `whence' command?
There are features in ksh-88 that do not have direct bash equivalents.
@ -735,7 +787,7 @@ read var?prompt read -p prompt var
Section E: How can I get bash to do certain things, and why does bash do
things the way it does?
22) Why is the bash builtin `test' slightly different from /bin/test?
E1) Why is the bash builtin `test' slightly different from /bin/test?
The specific example used here is [ ! x -o x ], which is false.
@ -764,7 +816,7 @@ of the 3 Arg case.
As you can see, the test becomes (not (x or x)), which is false.
23) Why does bash sometimes say `Broken pipe'?
E2) Why does bash sometimes say `Broken pipe'?
If a sequence of commands appears in a pipeline, and one of the
reading commands finishes before the writer has finished, the
@ -779,7 +831,11 @@ will try to write on a pipe without a reader. In that case, bash
will print `Broken pipe' to stderr when ps is killed by a
SIGPIPE.
24) How can I get bash to read and display eight-bit characters?
You can build a version of bash that will not report SIGPIPE errors
by uncommenting the definition of DONT_REPORT_SIGPIPE in the file
config-top.h.
E3) How can I get bash to read and display eight-bit characters?
This is a process requiring several steps.
@ -813,7 +869,7 @@ this. These variables can be set in your .inputrc or using the bash
The `set' commands between the single quotes may also be placed
in ~/.inputrc.
25) How do I write a function `x' to replace builtin command `x', but
E4) How do I write a function `x' to replace builtin command `x', but
still invoke the command from within the function?
This is why the `command' and `builtin' builtins exist. The
@ -834,7 +890,7 @@ something like the following:
This could also be written using `command' instead of `builtin';
the version above is marginally more efficient.
26) When I have terminal escape sequences in my prompt, why does bash
E5) When I have terminal escape sequences in my prompt, why does bash
wrap lines at the wrong column?
Readline, the line editing library that bash uses, does not know
@ -850,10 +906,10 @@ characters in the prompt strings take up no screen space.
Use the \[ escape to begin a sequence of non-printing characters,
and the \] escape to signal the end of such a sequence.
27) How can I find the value of a shell variable whose name is the value
E6) How can I find the value of a shell variable whose name is the value
of another shell variable?
Bash-2.02 supports this directly. You can use
Versions of Bash newer than Bash-2.0 support this directly. You can use
${!var}
@ -875,13 +931,13 @@ parameter:
The expansion of the quoted portions of this expression will be
deferred until `eval' runs, while the `$#' will be expanded
before `eval' is executed. In bash-2.02,
before `eval' is executed. In versions of bash later than bash-2.0,
echo ${!#}
does the same thing.
28) If I pipe the output of a command into `read variable', why doesn't
E7) If I pipe the output of a command into `read variable', why doesn't
the output show up in $variable when the read command finishes?
This has to do with the parent-child relationship between Unix
@ -937,7 +993,7 @@ this.
This is the general approach -- in most cases you will not need to
set $IFS to a different value.
29) I have a bunch of shell scripts that use backslash-escaped characters
E8) I have a bunch of shell scripts that use backslash-escaped characters
in arguments to `echo'. Bash doesn't interpret these characters. Why
not, and how can I make it understand them?
@ -957,7 +1013,7 @@ configure with the --enable-usg-echo-default option to turn this
on. Be aware that this will cause some of the tests run when you
type `make tests' to fail.
30) Why doesn't a while or for loop get suspended when I type ^Z?
E9) Why doesn't a while or for loop get suspended when I type ^Z?
This is a consequence of how job control works on Unix. The only
thing that can be suspended is the process group. This is a single
@ -972,8 +1028,8 @@ If you want to be able to stop the entire loop, you need to put it
within parentheses, which will force the loop into a subshell that
may be stopped (and subsequently restarted) as a single unit.
31) How can I make the bash `time' reserved word print timing output that
looks like the output from my system's /usr/bin/time?
E10) How can I make the bash `time' reserved word print timing output that
looks like the output from my system's /usr/bin/time?
The bash command timing code looks for a variable `TIMEFORMAT' and
uses its value as a format string to decide how to display the
@ -1006,7 +1062,7 @@ The ksh format can be emulated with:
Section F: Things to watch out for on certain Unix versions
32) Why can't I use command line editing in my `cmdtool'?
F1) Why can't I use command line editing in my `cmdtool'?
The problem is `cmdtool' and bash fighting over the input. When
scrolling is enabled in a cmdtool window, cmdtool puts the tty in
@ -1034,7 +1090,7 @@ The bash command-line editing should behave better in the new
cmdtool. If this works, you can put the assignment to TERMCAP
in your bashrc file.
33) I built bash on Solaris 2. Why do globbing expansions and filename
F2) I built bash on Solaris 2. Why do globbing expansions and filename
completion chop off the first few characters of each filename?
This is the consequence of building bash on SunOS 5 and linking
@ -1054,7 +1110,7 @@ If you have installed the Sun C compiler, you may also need to
put /usr/ccs/bin and /opt/SUNWspro/bin into your $PATH before
/usr/ucb.
34) Why does bash dump core after I interrupt username completion or
F3) Why does bash dump core after I interrupt username completion or
`~user' tilde expansion on a machine running NIS?
This is a famous and long-standing bug in the SunOS YP (sorry, NIS)
@ -1077,7 +1133,7 @@ times; that's probably why this has never been fixed. You can
run configure with the `--without-gnu-malloc' option to use
the C library malloc and avoid the problem.
35) I'm running SVR4.2. Why is the line erased every time I type `@'?
F4) I'm running SVR4.2. Why is the line erased every time I type `@'?
The `@' character is the default `line kill' character in most
versions of System V, including SVR4.2. You can change this
@ -1088,7 +1144,7 @@ change the line kill character to control-u, type
where the `^' and `U' can be two separate characters.
36) Why does bash report syntax errors when my C News scripts use a
F5) Why does bash report syntax errors when my C News scripts use a
redirection before a subshell command?
The actual command in question is something like
@ -1100,7 +1156,7 @@ is, in fact, a syntax error. Redirections may only precede `simple
commands'. A subshell construct such as the above is one of the shell's
`compound commands'. A redirection may only follow a compound command.
The file CWRU/sh-redir-hack in the bash-2.02 distribution is an
The file CWRU/sh-redir-hack in the bash-2.03 distribution is an
(unofficial) patch to parse.y that will modify the grammar to
support this construct. It will not apply with `patch'; you must
modify parse.y by hand. Note that if you apply this, you must
@ -1109,7 +1165,7 @@ number of reduce/reduce conflicts into the shell grammar.
Section G: Where do I go from here?
37) How do I report bugs in bash, and where should I look for fixes and
G1) How do I report bugs in bash, and where should I look for fixes and
advice?
Use the `bashbug' script to report bugs. It is built and
@ -1117,7 +1173,7 @@ installed at the same time as bash. It provides a standard
template for reporting a problem and automatically includes
information about your configuration and build environment.
`bashbug' sends its reports to bug-bash@prep.ai.mit.edu, which
`bashbug' sends its reports to bug-bash@gnu.org, which
is a large mailing list gatewayed to the usenet newsgroup gnu.bash.bug.
Bug fixes, answers to questions, and announcements of new releases
@ -1125,24 +1181,23 @@ are all posted to gnu.bash.bug. Discussions concerning bash features
and problems also take place there.
To reach the bash maintainers directly, send mail to
bash-maintainers@prep.ai.mit.edu.
bash-maintainers@gnu.org.
38) What kind of bash documentation is there?
G2) What kind of bash documentation is there?
First, look in the doc directory in the bash distribution. It should
contain at least the following files:
bash.1 an extensive, thorough Unix-style manual page
builtins.1 a manual page covering just bash builtin commands
bashref.texi a reference manual in GNU info format
bash.html an HTML version of the manual page
bashref.html an HTML version of the reference manual
bashref.texi a reference manual in GNU tex`info format
bashref.info an info version of the reference manual
FAQ this file
article.ms text of an article written for The Linux Journal
readline.3 a man page describing readline
Postscript files created from the above source are available in
the documentation distribution.
Postscript, HTML, and ASCII files created from the above source are
available in the documentation distribution.
There is additional documentation available for anonymous FTP from host
ftp.cwru.edu in the `pub/bash' directory.
@ -1158,14 +1213,14 @@ A second edition of this book is available, published in January, 1998.
The ISBN number is 1-56592-347-2. Look for it in the same fine bookstores
or on the web.
39) What's coming in future versions?
G3) What's coming in future versions?
These are features I plan to include in a future version of bash.
a bash debugger (a minimally-tested version is included with bash-2.02)
Programmable completion a la zsh
Programmable completion a la zsh/tcsh
40) What's on the bash `wish list' for future versions?
G4) What's on the bash `wish list' for future versions?
These are features that may or may not appear in a future version of bash.
@ -1177,14 +1232,17 @@ timeouts for the `read' builtin
the ksh-93 ${!prefix*} and ${!prefix@} operators
arithmetic ++ and -- prefix and postfix operators
date-stamped command history
a way to bind readline editing key sequences to shell commands
a mechanism to open network connections and assign them to file descriptors
using redirection (like ksh /dev/{tcp,udp})
41) When will the next release appear?
G5) When will the next release appear?
The next version will appear sometime in 1998. Never make
The next version will appear sometime in 1999. Never make
predictions.
This document is Copyright 1995, 1996, 1998 by Chester Ramey.
This document is Copyright 1995-1999 by Chester Ramey.
Permission is hereby granted, without written agreement and
without license or royalty fees, to use, copy, and distribute

View file

@ -134,7 +134,7 @@ have access to all of the shell facilities.
Help
Bash includes a built-in help factility.
Bash includes a built-in help facility.
Shell Optional Behavior

View file

@ -1,5 +1,6 @@
# This Makefile is for the Bash/documentation directory -*- text -*-.
#
SHELL = @MAKE_SHELL@
RM = rm -f
topdir = @top_srcdir@
@ -84,11 +85,17 @@ RLUSER = $(RL_LIBDIR)/doc/rluser.texinfo
all: ps info dvi text html
nodvi: ps info text html
ps: bash.ps bashbug.ps readline.ps article.ps builtins.ps
dvi: bashref.dvi bashref.ps
info: bashref.info
text: bash.0 bashbug.0 builtins.0 readline.0
html: bashref.html bash.html
PSFILES = bash.ps bashbug.ps readline.ps article.ps builtins.ps
DVIFILES = bashref.dvi bashref.ps
INFOFILES = bashref.info
MAN0FILES = bash.0 bashbug.0 builtins.0 readline.0
HTMLFILES = bashref.html bash.html
ps: ${PSFILES}
dvi: ${DVIFILES}
info: ${INFOFILES}
text: ${MAN0FILES}
html: ${HTMLFILES}
bashref.dvi: $(srcdir)/bashref.texi $(HSUSER) $(RLUSER)
TEXINPUTS=.:$(TEXINPUTDIR):$$TEXINPUTS $(TEXI2DVI) $(srcdir)/bashref.texi
@ -101,7 +108,7 @@ bashref.info: $(srcdir)/bashref.texi $(HSUSER) $(RLUSER)
$(MAKEINFO) --no-split -I$(TEXINPUTDIR) $(srcdir)/bashref.texi
bashref.html: bashref.texi $(HSUSER) $(RLUSER)
$(TEXI2HTML) -I $(TEXINPUTDIR) $(srcdir)/bashref.texi
$(TEXI2HTML) -menu -monolithic -I $(TEXINPUTDIR) $(srcdir)/bashref.texi
bash.dvi: bash.texinfo $(HSUSER) $(RLUSER)
TEXINPUTS=.:$(TEXINPUTDIR):$$TEXINPUTS $(TEXI2DVI) bash.texinfo
@ -125,7 +132,9 @@ article.ps: article.ms
$(MAN2HTML): ${topdir}/support/man2html.c
-( cd ${BUILD_DIR}/support ; ${MAKE} ${MFLAGS} man2html)
faq: faq.news faq.news2 faq.mail faq.version
CREATED_FAQ = faq.news faq.news2 faq.mail faq.version
faq: ${CREATED_FAQ}
faq.version: FAQ.version FAQ
sh mkfaqvers FAQ.version > $@
@ -143,15 +152,16 @@ faq.mail: FAQ FAQ.headers.mail faq.version
cat FAQ.headers.mail faq.version FAQ > $@
clean:
$(RM) *.aux *.cp *.fn *.ky *.log *.pg *.toc *.tp *.vr *.cps \
*.pgs *.bt *.bts *.rw *.rws *.fns *.kys *.tps *.vrs *.o \
core rluser.texinfo hsuser.texinfo
$(RM) *.aux *.bak *.cp *.fn *.ky *.log *.pg *.toc *.tp *.vr *.cps \
*.pgs *.bt *.bts *.rw *.rws *.fns *.kys *.tps *.vrs *.o
${RM} core *.core
distclean mostlyclean: clean
$(RM) Makefile
maintainer-clean: clean
$(RM) *.0 *.ps *.dvi *.info *.txt
${RM} ${PSFILES} ${DVIFILES} ${INFOFILES} ${MAN0FILES} ${HTMLFILES}
${RM} ${CREATED_FAQ}
$(RM) Makefile
installdirs:
@ -166,7 +176,7 @@ install: info installdirs
# uncomment the next line to install the readline man page
# -$(INSTALL_DATA) $(srcdir)/readline.3 $(man3dir)/readline.${man3ext}
# uncomment the next line to install the builtins man page
# $(INSTALL_DATA) builtins.1 $(man1dir)/bash_builtins.${man1ext}
# $(INSTALL_DATA) $(srcdir)/builtins.1 $(man1dir)/bash_builtins.${man1ext}
-$(INSTALL_DATA) $(srcdir)/bashref.info $(infodir)/bash.info
# run install-info if it is present to update the info directory
if $(SHELL) -c 'install-info --version' >/dev/null 2>&1; then \

View file

@ -1,11 +1,12 @@
This directory contains the bash documentation.
FAQ - a set of frequently-asked questions about Bash with answers
INTRO - a short introduction to bash
article.ms - an article I wrote about bash for The Linux Journal
bash.1 - the bash man page
builtins.1 - a man page that documents the builtins, extracted from bash.1
features.texi - the `bash reference manual'
features.info - the `bash reference manual' processed by `makeinfo'
bashref.texi - the `bash reference manual'
bashref.info - the `bash reference manual' processed by `makeinfo'
readline.3 - the readline man page
The `.ps' files are postscript versions of the above. The `.html'

View file

@ -6,11 +6,11 @@
.\" Case Western Reserve University
.\" chet@ins.CWRU.Edu
.\"
.\" Last Change: Wed Apr 1 12:16:09 EST 1998
.\" Last Change: Wed Jan 20 16:47:14 EST 1999
.\"
.\" bash_builtins, strip all but Built-Ins section
.if \n(zZ=1 .ig zZ
.TH BASH 1 "1998 Apr 1" GNU
.TH BASH 1 "1999 Jan 20" GNU
.\"
.\" There's some problem with having a `@'
.\" in a tagged paragraph with the BSD man macros.
@ -50,8 +50,8 @@ bash \- GNU Bourne-Again SHell
[options]
[file]
.SH COPYRIGHT
.if n Bash is Copyright (C) 1989, 1991, 1993, 1995, 1996 by the Free Software Foundation, Inc.
.if t Bash is Copyright \(co 1989, 1991, 1993, 1995, 1996 by the Free Software Foundation, Inc.
.if n Bash is Copyright (C) 1989-1999 by the Free Software Foundation, Inc.
.if t Bash is Copyright \(co 1989-1999 by the Free Software Foundation, Inc.
.SH DESCRIPTION
.B Bash
is an \fBsh\fR-compatible command language interpreter that
@ -260,7 +260,8 @@ section.
.PP
When
.B bash
is invoked as an interactive login shell, it first reads and
is invoked as an interactive login shell, or as a non-interactive shell
with the \fB\-\-login\fP option, it first reads and
executes commands from the file \fI/etc/profile\fP, if that
file exists.
After reading that file, it looks for \fI~/.bash_profile\fP,
@ -313,7 +314,8 @@ it tries to mimic the startup behavior of historical versions of
.B sh
as closely as possible,
while conforming to the POSIX standard as well.
When invoked as an interactive login shell, it first attempts to
When invoked as an interactive login shell, or a non-interactive
shell with the \fB\-\-login\fP option, it first attempts to
read and execute commands from
.I /etc/profile
and
@ -338,7 +340,7 @@ files, the
option has no effect.
A non-interactive shell invoked with the name
.B sh
does not attempt to read any startup files.
does not attempt to read any other startup files.
When invoked as
.BR sh ,
.B bash
@ -375,6 +377,14 @@ option may be used to inhibit this behavior, and the
option may be used to force another file to be read, but
\fIrshd\fP does not generally invoke the shell with those options
or allow them to be specified.
.PP
If the shell is started with the effective user (group) id not equal to the
real user (group) id, and the \fB\-p\fP option is not supplied, no startup
files are read, shell functions are not inherited from the environment,
the \fBSHELLOPTS\fP variable, if it appears in the environment, is ignored,
and the effective user id is set to the real user id.
If the \fB\-p\fP option is supplied at invocation, the startup behavior is
the same, but the effective user id is not reset.
.SH DEFINITIONS
.PP
The following definitions are used throughout the rest of this
@ -646,7 +656,7 @@ operators do not execute \fIexpression2\fP if the value of
\fIexpression1\fP is sufficient to determine the return value of
the entire conditional expression.
.TP
\fBfor\fP \fIname\fP [ \fBin\fP \fIword\fP; ] \fBdo\fP \fIlist\fP ; \fBdone\fP
\fBfor\fP \fIname\fP [ \fBin\fP \fIword\fP ] ; \fBdo\fP \fIlist\fP ; \fBdone\fP
The list of words following \fBin\fP is expanded, generating a list
of items. The variable \fIname\fP is set to each element of this list
in turn, and \fIlist\fP is executed each time. If the \fBin\fP
@ -659,7 +669,7 @@ The return status is the exit status of the last command that executes.
If the expansion of the items following \fBin\fP results in an empty
list, no commands are executed, and the return status is 0.
.TP
\fBselect\fP \fIname\fP [ \fBin\fP \fIword\fP; ] \fBdo\fP \fIlist\fP ; \fBdone\fP
\fBselect\fP \fIname\fP [ \fBin\fP \fIword\fP ] ; \fBdo\fP \fIlist\fP ; \fBdone\fP
The list of words following \fBin\fP is expanded, generating a list
of items. The set of expanded words is printed on the standard
error, each preceded by a number. If the \fBin\fP
@ -2095,9 +2105,9 @@ In the first form, only the first match is replaced.
The second form causes all matches of \fIpattern\fP to be
replaced with \fIstring\fP.
If \fIpattern\fP begins with \fB#\fP, it must match at the beginning
of \fIstring\fP.
of the expanded value of \fIparameter\fP.
If \fIpattern\fP begins with \fB%\fP, it must match at the end
of \fIstring\fP.
of the expanded value of \fIparameter\fP.
If \fIstring\fP is null, matches of \fIpattern\fP are deleted
and the \fB/\fP following \fIpattern\fP may be omitted.
If
@ -2985,6 +2995,9 @@ True if \fIfile\fP exists and is a regular file.
.B \-g \fIfile\fP
True if \fIfile\fP exists and is set-group-id.
.TP
.B \-h \fIfile\fP
True if \fIfile\fP exists and is a symbolic link.
.TP
.B \-k \fIfile\fP
True if \fIfile\fP exists and its ``sticky'' bit is set.
.TP
@ -4032,6 +4045,12 @@ regardless of what the terminal claims it can support. The name
.B meta\-flag
is a synonym for this variable.
.TP
.B isearch\-terminators (``C\-[C\-J'')
The string of characters that should terminate an incremental
search without subsequently executing the character as a command.
If this variable has not been given a value, the characters
\fIESC\fP and \fIC\-J\fP will terminate an incremental search.
.TP
.B keymap (emacs)
Set the current readline keymap. The set of valid keymap names is
\fIemacs, emacs\-standard, emacs\-meta, emacs\-ctlx, vi,
@ -4159,8 +4178,10 @@ 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 Escape character is used to terminate an incremental search.
Control-J will also terminate the search.
The characters present in the value of the \fIisearch-terminators\fP
variable are used to terminate an incremental search.
If that variable has not been assigned a value the Escape and
Control-J characters will terminate an incremental search.
Control-G will abort an incremental search and restore the original
line.
When the search is terminated, the history entry containing the
@ -4341,6 +4362,11 @@ then return
Delete the character behind the cursor. When given a numeric argument,
save the deleted text on the kill ring.
.TP
.B forward\-backward\-delete\-char
Delete the character under the cursor, unless the cursor is at the
end of the line, in which case the character behind the cursor is
deleted. By default, this is not bound to a key.
.TP
.B quoted\-insert (C\-q, C\-v)
Add the next character typed to the line verbatim. This is
how to insert characters like \fBC\-q\fP, for example.
@ -4487,6 +4513,13 @@ through the list.
This command is intended to be bound to \fBTAB\fP, but is unbound
by default.
.TP
.B delete\-char\-or\-list
Deletes the character under the cursor if not at the beginning or
end of the line (like \fBdelete-char\fP).
If at the end of the line, behaves identically to
\fBpossible-completions\fP.
This command is unbound by default.
.TP
.B complete\-filename (M\-/)
Attempt filename completion on the text before point.
.TP
@ -4588,7 +4621,7 @@ Undo all changes made to this line. This is like executing the
.B undo
command enough times to return the line to its initial state.
.TP
.B tilde\-expand (M\-~)
.B tilde\-expand (M\-&)
Perform tilde expansion on the current word.
.TP
.B set\-mark (C\-@, M\-<space>)
@ -6210,13 +6243,17 @@ The characters in
.SM
.B IFS
are used to split the line into words.
The backslash character (\fB\e\fP) may be used to remove any special
meaning for the next character read and for line continuation.
Options, if supplied, have the following meanings:
.RS
.PD 0
.TP
.B \-r
A backslash-newline pair is not ignored, and
the backslash is considered to be part of the line.
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.
.TP
.B \-p
Display \fIprompt\fP, without a
@ -6487,11 +6524,16 @@ Turn on
.I privileged
mode. In this mode, the
.B $ENV
file is not processed, shell functions are not inherited from the
environment, and the variable
The \fBSHELLOPTS\fP variable, if it appears in the environment, is ignored.
This is enabled automatically on startup if the effective user (group)
id is not equal to the real user (group) id.
and
.B $BASH_ENV
files are not processed, shell functions are not inherited from the
environment, and the \fBSHELLOPTS\fP variable, if it appears in the
environment, is ignored.
If the shell is started with the effective user (group) id not equal to the
real user (group) id, and the \fB\-p\fP option is not supplied, these actions
are taken and the effective user id is set to the real user id.
If the \fB\-p\fP option is supplied at startup, the effective user id is
not reset.
Turning this option off causes the effective user
and group ids to be set to the real user and group ids.
.TP 8
@ -6794,6 +6836,15 @@ being expanded as described in
.B PROMPTING
above. This option is enabled by default.
.TP 8
.B restricted_shell
The shell sets this option if it is started in restricted mode (see
.SM
.B "RESTRICTED SHELL"
below).
The value may not be changed.
This is not reset when the startup files are executed, allowing
the startup files to discover whether or not a shell is restricted.
.TP 8
.B shift_verbose
If set, the
.B shift
@ -7232,9 +7283,11 @@ with the exception that the following are disallowed or not performed:
changing directories with \fBcd\fP
.IP \(bu
setting or unsetting the values of
.B SHELL
.BR SHELL ,
.BR PATH ,
.BR ENV ,
or
.B PATH
.B BASH_ENV
.IP \(bu
specifying command names containing
.B /
@ -7313,6 +7366,9 @@ The personal initialization file, executed for login shells
.FN ~/.bashrc
The individual per-interactive-shell startup file
.TP
.FN ~/.bash_logout
The individual login shell cleanup file, executed when a login shell exits
.TP
.FN ~/.inputrc
Individual \fIreadline\fP initialization file
.PD

View file

@ -1,4 +1,4 @@
.TH BASHBUG 1 "1995 August 10" GNU
.TH BASHBUG 1 "1998 July 30" GNU
.SH NAME
bashbug \- report a bug in bash
.SH SYNOPSIS
@ -14,7 +14,7 @@ invokes the editor specified by the environment variable
on a temporary copy of the bug report format outline. The user must
fill in the appropriate fields and exit the editor.
.B bashbug
then mails the completed report to \fIbug-bash@prep.ai.mit.edu\fP, or
then mails the completed report to \fIbug-bash@gnu.org\fP, or
\fIaddress\fP. If the report cannot be mailed, it is saved in the
file \fIdead.bashbug\fP in the invoking user's home directory.
.PP

View file

@ -9,11 +9,11 @@ END-INFO-DIR-ENTRY
This text is a brief description of the features that are present in
the Bash shell.
This is Edition 2.2, last updated 1 April 1998,
This is Edition 2.3, last updated 20 January 1999,
of `The GNU Bash Reference Manual',
for `Bash', Version 2.02.
for `Bash', Version 2.03.
Copyright (C) 1991, 1993, 1996, 1997 Free Software Foundation, Inc.
Copyright (C) 1991-1999 Free Software Foundation, Inc.
Permission is granted to make and distribute verbatim copies of
this manual provided the copyright notice and this permission notice
@ -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.2, last updated 1 April 1998, of `The GNU Bash
Reference Manual', for `Bash', Version 2.02.
This is Edition 2.3, last updated 20 January 1999, of `The GNU Bash
Reference Manual', for `Bash', Version 2.03.
Copyright (C) 1991, 1993, 1996 Free Software Foundation, Inc.
@ -1232,15 +1232,16 @@ parameter that is unset.
against its value is replaced with STRING. In the first form,
only the first match is replaced. The second form causes all
matches of PATTERN to be replaced with STRING. If PATTERN begins
with `#', it must match at the beginning of STRING. If PATTERN
begins with `%', it must match at the end of STRING. If STRING is
null, matches of PATTERN are deleted and the `/' following PATTERN
may be omitted. If PARAMETER is `@' or `*', the substitution
operation is applied to each positional parameter in turn, and the
expansion is the resultant list. If PARAMETER is an array
variable subscripted with `@' or `*', the substitution operation
is applied to each member of the array in turn, and the expansion
is the resultant list.
with `#', it must match at the beginning of the expanded value of
PARAMETER. If PATTERN begins with `%', it must match at the end
of the expanded value of PARAMETER. If STRING is null, matches of
PATTERN are deleted and the `/' following PATTERN may be omitted.
If PARAMETER is `@' or `*', the substitution operation is applied
to each positional parameter in turn, and the expansion is the
resultant list. If PARAMETER is an array variable subscripted
with `@' or `*', the substitution operation is applied to each
member of the array in turn, and the expansion is the resultant
list.

File: bashref.info, Node: Command Substitution, Next: Arithmetic Expansion, Prev: Shell Parameter Expansion, Up: Shell Expansions
@ -1982,14 +1983,16 @@ standard.
The return status is zero.
`.'
. FILENAME
. 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
is searched if FILENAME is not found in `$PATH'. 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.
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.
`break'
break [N]
@ -2762,8 +2765,9 @@ 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, it first reads
and executes commands from the file `/etc/profile', if that file exists.
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
@ -2798,16 +2802,17 @@ name.
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, 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
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 startup files.
read any other startup files.
When invoked as `sh', Bash enters POSIX mode after the startup files
are read.
@ -2827,6 +2832,14 @@ 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
@ -3126,15 +3139,18 @@ been extended in Bash.
assigned to the last NAME. If there are fewer words read from the
standard input than names, the remaining names are assigned empty
values. The characters in the value of the `IFS' variable are
used to split the line into words. If no names are supplied, the
used to split the line into words. The backslash character `\'
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, a backslash-newline pair is not
ignored, and the backslash is considered to be part of the
line.
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
@ -3287,6 +3303,13 @@ been extended in Bash.
expansion after being expanded (*note Printing a Prompt::.).
This option is enabled by default.
`restricted_shell'
The shell sets this option if it is started in restricted mode
(*note The Restricted Shell::.). The value may not be
changed. This is not reset when the startup files are
executed, allowing the startup files to discover whether or
not a shell is restricted.
`shift_verbose'
If this is set, the `shift' builtin prints an error message
when the shift count exceeds the number of positional
@ -3527,11 +3550,14 @@ The Set Builtin
Turn on privileged mode. In this mode, the `$BASH_ENV' and
`$ENV' files are not processed, shell functions are not
inherited from the environment, and the `SHELLOPTS' variable,
if it appears in the environment, is ignored. This is
enabled automatically on startup if the effective user
(group) id is not equal to the real user (group) id. Turning
this option off causes the effective user and group ids to be
set to the real user and group ids.
if it appears in the environment, is ignored. If the shell
is started with the effective user (group) id not equal to the
real user (group) id, and the `-p' option is not supplied,
these actions are taken and the effective user id is set to
the real user id. If the `-p' option is supplied at startup,
the effective user id is not reset. Turning this option off
causes the effective user and group ids to be set to the real
user and group ids.
`-t'
Exit after reading and executing one command.
@ -3640,6 +3666,9 @@ checked.
`-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.
@ -4450,7 +4479,8 @@ the standard shell. A restricted shell behaves identically to `bash'
with the exception that the following are disallowed:
* Changing directories with the `cd' builtin.
* Setting or unsetting the values of the `SHELL' or `PATH' variables.
* Setting or unsetting the values of the `SHELL', `PATH', `ENV', or
`BASH_ENV' variables.
* Specifying command names containing slashes.
@ -5346,18 +5376,19 @@ string. There are two search modes: INCREMENTAL and NON-INCREMENTAL.
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 <ESC> character is
used to terminate an incremental search. <C-j> will also terminate the
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. 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.
Non-incremental searches read the entire search string before
starting to search for matching history lines. The search string may be
@ -5471,6 +5502,20 @@ Variable Settings
longer than the width of the screen, instead of wrapping onto
a new screen line. By default, this variable is set to `off'.
`input-meta'
If set to `on', Readline will enable eight-bit input (it will
not strip the eighth bit from the characters it reads),
regardless of what the terminal claims it can support. The
default value is `off'. The name `meta-flag' is a synonym
for this variable.
`isearch-terminators'
The string of characters that should terminate an incremental
search without subsequently executing the character as a
command (*note Searching::.). If this variable has not been
given a value, the characters <ESC> and <C-J> will terminate
an incremental search.
`keymap'
Sets Readline's idea of the current keymap for key binding
commands. Acceptable `keymap' names are `emacs',
@ -5489,13 +5534,6 @@ Variable Settings
asterisk (`*') at the start of history lines which have been
modified. This variable is `off' by default.
`input-meta'
If set to `on', Readline will enable eight-bit input (it will
not strip the eighth bit from the characters it reads),
regardless of what the terminal claims it can support. The
default value is `off'. The name `meta-flag' is a synonym
for this variable.
`output-meta'
If set to `on', Readline will display characters with the
eighth bit set directly rather than as a meta-prefixed escape
@ -5929,6 +5967,11 @@ Commands For Changing Text
Delete the character behind the cursor. A numeric argument means
to kill the characters instead of deleting them.
`forward-backward-delete-char ()'
Delete the character under the cursor, unless the cursor is at the
end of the line, in which case the character behind the cursor is
deleted. By default, this is not bound to a key.
`quoted-insert (C-q, C-v)'
Add the next character typed to the line verbatim. This is how to
insert key sequences like <C-q>, for example.
@ -6083,6 +6126,12 @@ Letting Readline Type For You
This command is intended to be bound to `TAB', but is unbound by
default.
`delete-char-or-list ()'
Deletes the character under the cursor if not at the beginning or
end of the line (like `delete-char'). If at the end of the line,
behaves identically to `possible-completions'. This command is
unbound by default.
`complete-filename (M-/)'
Attempt filename completion on the text before point.
@ -6180,7 +6229,7 @@ Some Miscellaneous Commands
Undo all changes made to this line. This is like executing the
`undo' command enough times to get back to the beginning.
`tilde-expand (M-~)'
`tilde-expand (M-&)'
Perform tilde expansion on the current word.
`set-mark (C-@)'
@ -6562,6 +6611,11 @@ that the Bash `configure' recognizes.
for which this should be turned off, and `configure' disables this
option automatically for a number of systems.
`--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.
`--with-purify'
Define this to use the Purify memory allocation checker from Pure
Software.
@ -6857,6 +6911,7 @@ Parameter and Variable Index
* IGNOREEOF: Bash Variables.
* input-meta: Readline Init File Syntax.
* INPUTRC: Bash Variables.
* isearch-terminators: Readline Init File Syntax.
* keymap: Readline Init File Syntax.
* LANG: Bash Variables.
* LC_ALL: Bash Variables.
@ -6923,6 +6978,7 @@ Function Index
* copy-forward-word (): Commands For Killing.
* copy-region-as-kill (): Commands For Killing.
* delete-char (C-d): Commands For Text.
* delete-char-or-list (): Commands For Completion.
* delete-horizontal-space (): Commands For Killing.
* digit-argument (M-0, M-1, ... M--): Numeric Arguments.
* do-uppercase-version (M-a, M-b, M-X, ...): Miscellaneous Commands.
@ -6934,6 +6990,7 @@ Function Index
* end-of-history (M->): Commands For History.
* end-of-line (C-e): Commands For Moving.
* exchange-point-and-mark (C-x C-x): Miscellaneous Commands.
* forward-backward-delete-char (): Commands For Text.
* forward-char (C-f): Commands For Moving.
* forward-search-history (C-s): Commands For History.
* forward-word (M-f): Commands For Moving.
@ -6960,7 +7017,6 @@ Function Index
* self-insert (a, b, A, 1, !, ...): Commands For Text.
* set-mark (C-@): Miscellaneous Commands.
* start-kbd-macro (C-x (): Keyboard Macros.
* tilde-expand (M-~): Miscellaneous Commands.
* transpose-chars (C-t): Commands For Text.
* transpose-words (M-t): Commands For Text.
* undo (C-_, C-x C-u): Miscellaneous Commands.
@ -7092,120 +7148,120 @@ Concept Index

Tag Table:
Node: Top1197
Node: Introduction3153
Node: What is Bash?3378
Node: What is a shell?4472
Node: Definitions6494
Node: Basic Shell Features9155
Node: Shell Syntax10378
Node: Shell Operation10667
Node: Quoting11961
Node: Escape Character12986
Node: Single Quotes13458
Node: Double Quotes13787
Node: ANSI-C Quoting14685
Node: Locale Translation15554
Node: Comments15975
Node: Shell Commands16589
Node: Simple Commands17100
Node: Pipelines17659
Node: Lists19186
Node: Looping Constructs20641
Node: Conditional Constructs22246
Node: Command Grouping28184
Node: Shell Functions29561
Node: Shell Parameters31525
Node: Positional Parameters32851
Node: Special Parameters33600
Node: Shell Expansions36221
Node: Brace Expansion38144
Node: Tilde Expansion39705
Node: Shell Parameter Expansion42037
Node: Command Substitution48379
Node: Arithmetic Expansion49653
Node: Process Substitution50498
Node: Word Splitting51392
Node: Filename Expansion52844
Node: Pattern Matching54808
Node: Quote Removal57197
Node: Redirections57483
Node: Executing Commands63553
Node: Simple Command Expansion64220
Node: Command Search and Execution66143
Node: Command Execution Environment68146
Node: Environment70600
Node: Exit Status72257
Node: Signals73454
Node: Shell Scripts75349
Node: Bourne Shell Features77385
Node: Bourne Shell Builtins78115
Node: Bourne Shell Variables92056
Node: Other Bourne Shell Features93761
Node: Major Differences From The Bourne Shell94504
Node: Bash Features106693
Node: Invoking Bash107796
Node: Bash Startup Files111981
Node: Is This Shell Interactive?115540
Node: Bash Builtins116511
Node: The Set Builtin137351
Node: Bash Conditional Expressions143960
Node: Bash Variables147033
Node: Shell Arithmetic159463
Node: Aliases161511
Node: Alias Builtins164086
Node: Arrays164702
Node: The Directory Stack167723
Node: Printing a Prompt171073
Node: The Restricted Shell172736
Node: Bash POSIX Mode174072
Node: Job Control178233
Node: Job Control Basics178699
Node: Job Control Builtins182898
Node: Job Control Variables187190
Node: Using History Interactively188340
Node: Bash History Facilities189019
Node: Bash History Builtins191360
Node: History Interaction194728
Node: Event Designators197280
Node: Word Designators198207
Node: Modifiers199456
Node: Command Line Editing200773
Node: Introduction and Notation201433
Node: Readline Interaction202471
Node: Readline Bare Essentials203663
Node: Readline Movement Commands205203
Node: Readline Killing Commands206168
Node: Readline Arguments207883
Node: Searching208857
Node: Readline Init File210475
Node: Readline Init File Syntax211514
Node: Conditional Init Constructs220379
Node: Sample Init File222817
Node: Bindable Readline Commands225986
Node: Commands For Moving226736
Node: Commands For History227583
Node: Commands For Text230412
Node: Commands For Killing232146
Node: Numeric Arguments234295
Node: Commands For Completion235421
Node: Keyboard Macros238991
Node: Miscellaneous Commands239549
Node: Readline vi Mode243869
Node: Installing Bash244747
Node: Basic Installation245824
Node: Compilers and Options248734
Node: Compiling For Multiple Architectures249468
Node: Installation Names251125
Node: Specifying the System Type251850
Node: Sharing Defaults252554
Node: Operation Controls253219
Node: Optional Features254124
Node: Reporting Bugs260319
Node: Builtin Index261390
Node: Reserved Word Index264793
Node: Variable Index266251
Node: Function Index271456
Node: Concept Index275885
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

End Tag Table

View file

@ -5,13 +5,13 @@
@c %**end of header
@ignore
last change: Wed Mar 25 11:36:48 EST 1998
Last Change: Wed Jan 20 16:46:26 EST 1999
@end ignore
@set EDITION 2.2
@set VERSION 2.02
@set UPDATED 1 April 1998
@set UPDATE-MONTH April 1998
@set EDITION 2.3
@set VERSION 2.03
@set UPDATED 20 January 1999
@set UPDATE-MONTH January 1999
@iftex
@finalout
@ -36,7 +36,7 @@ This is Edition @value{EDITION}, last updated @value{UPDATED},
of @cite{The GNU Bash Reference Manual},
for @code{Bash}, Version @value{VERSION}.
Copyright (C) 1991, 1993, 1996, 1997 Free Software Foundation, Inc.
Copyright (C) 1991-1999 Free Software Foundation, Inc.
Permission is granted to make and distribute verbatim copies of
this manual provided the copyright notice and this permission notice
@ -64,13 +64,13 @@ by the Free Software Foundation.
@titlepage
@title Bash Reference Manual
@subtitle Reference Documentation for Bash
@subtitle Edition @value{EDITION}, for @code{bash} Version @value{VERSION}.
@subtitle @value{UPDATED}
@subtitle Edition @value{EDITION}, for @code{Bash} Version @value{VERSION}.
@subtitle @value{UPDATE-MONTH}
@author Chet Ramey, Case Western Reserve University
@author Brian Fox, Free Software Foundation
@page
@vskip 0pt plus 1filll
Copyright @copyright{} 1991, 1993, 1996 Free Software Foundation, Inc.
Copyright @copyright{} 1991-1999 Free Software Foundation, Inc.
Permission is granted to make and distribute verbatim copies of
this manual provided the copyright notice and this permission notice
@ -1428,9 +1428,9 @@ In the first form, only the first match is replaced.
The second form causes all matches of @var{pattern} to be
replaced with @var{string}.
If @var{pattern} begins with @samp{#}, it must match at the beginning
of @var{string}.
of the expanded value of @var{parameter}.
If @var{pattern} begins with @samp{%}, it must match at the end
of @var{string}.
of the expanded value of @var{parameter}.
If @var{string} is null, matches of @var{pattern} are deleted
and the @code{/} following @var{pattern} may be omitted.
If @var{parameter} is @samp{@@} or @samp{*},
@ -2285,13 +2285,16 @@ The return status is zero.
@item .
@btindex .
@example
. @var{filename}
. @var{filename} [@var{arguments}]
@end example
Read and execute commands from the @var{filename} argument in the
current shell context. If @var{filename} does not contain a slash,
the @code{$PATH} variable is used to find
@var{filename}. The current directory is searched if @var{filename}
is not found in @code{$PATH}.
If any @var{arguments} are supplied, they become the positional
parameters when @var{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 @var{filename} is not found, or
cannot be read, the return status is non-zero.
@ -3245,7 +3248,8 @@ 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 (@pxref{Tilde Expansion}).
When Bash is invoked as an interactive login shell, it first reads and
When Bash is invoked as an interactive login shell, or as a
non-interactive shell with the @samp{--login} option, it first reads and
executes commands from the file @file{/etc/profile}, if that file exists.
After reading that file, it looks for @file{~/.bash_profile},
@file{~/.bash_login}, and @file{~/.profile}, in that order, and reads
@ -3285,7 +3289,8 @@ If Bash is invoked with the name @code{sh}, it tries to mimic the
startup behavior of historical versions of @code{sh} as closely as
possible, while conforming to the @sc{POSIX} standard as well.
When invoked as an interactive login shell, it first attempts to read
When invoked as an interactive login shell, or as a non-interactive
shell with the @samp{--login} option, it first attempts to read
and execute commands from @file{/etc/profile} and @file{~/.profile}, in
that order.
The @samp{--noprofile} option may be used to inhibit this behavior.
@ -3296,7 +3301,7 @@ Since a shell invoked as @code{sh} does not attempt to read and execute
commands from any other startup files, the @samp{--rcfile} option has
no effect.
A non-interactive shell invoked with the name @code{sh} does not attempt
to read any startup files.
to read any other startup files.
When invoked as @code{sh}, Bash enters @sc{POSIX} mode after
the startup files are read.
@ -3319,6 +3324,14 @@ The @samp{--norc} option may be used to inhibit this behavior, and the
@code{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 @code{-p} option is not supplied, no startup
files are read, shell functions are not inherited from the environment,
the @code{SHELLOPTS} variable, if it appears in the environment, is ignored,
and the effective user id is set to the real user id.
If the @code{-p} option is supplied at invocation, the startup behavior is
the same, but the effective user id is not reset.
@node Is This Shell Interactive?
@section Is This Shell Interactive?
@cindex interactive shell
@ -3676,6 +3689,8 @@ If there are fewer words read from the standard input than names,
the remaining names are assigned empty values.
The characters in the value of the @code{IFS} variable
are used to split the line into words.
The backslash character @samp{\} 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 @code{REPLY}.
The return code is zero, unless end-of-file is encountered.
@ -3683,8 +3698,10 @@ Options, if supplied, have the following meanings:
@table @code
@item -r
If this option is given, a backslash-newline pair is not ignored, and
the backslash is considered to be part of the line.
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.
@item -p @var{prompt}
Display @var{prompt}, without a
@ -3853,6 +3870,13 @@ If set, prompt strings undergo variable and parameter expansion after
being expanded (@pxref{Printing a Prompt}).
This option is enabled by default.
@item restricted_shell
The shell sets this option if it is started in restricted mode
(@pxref{The Restricted Shell}).
The value may not be changed.
This is not reset when the startup files are executed, allowing
the startup files to discover whether or not a shell is restricted.
@item shift_verbose
If this is set, the @code{shift}
builtin prints an error message when the shift count exceeds the
@ -4120,9 +4144,12 @@ In this mode, the @code{$BASH_ENV} and @code{$ENV} files are not
processed, shell functions are not inherited from the environment,
and the @code{SHELLOPTS} variable, if it appears in the environment,
is ignored.
This is enabled automatically
on startup if the effective user (group) id is not equal to the real
user (group) id. Turning this option off causes the effective user
If the shell is started with the effective user (group) id not equal to the
real user (group) id, and the @code{-p} option is not supplied, these actions
are taken and the effective user id is set to the real user id.
If the @code{-p} option is supplied at startup, the effective user id is
not reset.
Turning this option off causes the effective user
and group ids to be set to the real user and group ids.
@item -t
@ -4235,6 +4262,9 @@ True if @var{file} exists and is a regular file.
@item -g @var{file}
True if @var{file} exists and its set-group-id bit is set.
@item -h @var{file}
True if @var{file} exists and is a symbolic link.
@item -k @var{file}
True if @var{file} exists and its "sticky" bit is set.
@ -5101,8 +5131,8 @@ with the exception that the following are disallowed:
@item
Changing directories with the @code{cd} builtin.
@item
Setting or unsetting the values of the @code{SHELL} or @code{PATH}
variables.
Setting or unsetting the values of the @code{SHELL}, @code{PATH},
@code{ENV}, or @code{BASH_ENV} variables.
@item
Specifying command names containing slashes.
@item
@ -5815,6 +5845,11 @@ The @file{NOTES} file contains a list of systems for
which this should be turned off, and @code{configure} disables this
option automatically for a number of systems.
@item --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.
@item --with-purify
Define this to use the Purify memory allocation checker from Pure
Software.

View file

@ -6,9 +6,9 @@
.\" Case Western Reserve University
.\" chet@ins.CWRU.Edu
.\"
.\" Last Change: Thu Feb 19 10:26:47 EST 1998
.\" Last Change: Thu Dec 31 10:16:30 EST 1998
.\"
.TH READLINE 3 "1998 Feb 19" GNU
.TH READLINE 3 "1998 Dec 31" GNU
.\"
.\" File Name macro. This used to be `.PN', for Path Name,
.\" but Sun doesn't seem to like that very much.
@ -22,6 +22,7 @@ readline \- get a line from a user with editing
.LP
.nf
.ft B
#include <stdio.h>
#include <readline.h>
#include <history.h>
.ft
@ -380,6 +381,19 @@ When set to \fBOn\fP, makes readline use a single line for display,
scrolling the input horizontally on a single screen line when it
becomes longer than the screen width rather than wrapping to a new line.
.TP
.B input\-meta (Off)
If set to \fBOn\fP, readline will enable eight-bit input (that is,
it will not strip the high bit from the characters it reads),
regardless of what the terminal claims it can support. The name
.B meta\-flag
is a synonym for this variable.
.TP
.B isearch\-terminators (``C\-[C\-J'')
The string of characters that should terminate an incremental
search without subsequently executing the character as a command.
If this variable has not been given a value, the characters
\fIESC\fP and \fIC\-J\fP will terminate an incremental search.
.TP
.B keymap (emacs)
Set the current readline keymap. The set of legal keymap names is
\fIemacs, emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move,
@ -400,11 +414,6 @@ appended.
If set to \fBOn\fP, history lines that have been modified are displayed
with a preceding asterisk (\fB*\fP).
.TP
.B meta\-flag (Off)
If set to \fBOn\fP, readline will enable eight-bit input (that is,
it will not strip the high bit from the characters it reads),
regardless of what the terminal claims it can support.
.TP
.B output\-meta (Off)
If set to \fBOn\fP, readline will display characters with the
eighth bit set directly rather than as a meta-prefixed escape
@ -509,8 +518,10 @@ 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 Escape character is used to terminate an incremental search.
Control-J will also terminate the search.
The characters present in the value of the \fIisearch-terminators\fP
variable are used to terminate an incremental search.
If that variable has not been assigned a value the Escape and
Control-J characters will terminate an incremental search.
Control-G will abort an incremental search and restore the original
line.
When the search is terminated, the history entry containing the
@ -647,6 +658,11 @@ the last character typed was not bound to \fBBdelete\-char\fP, then return
Delete the character behind the cursor. When given a numeric argument,
save the deleted text on the kill ring.
.TP
.B forward\-backward\-delete\-char
Delete the character under the cursor, unless the cursor is at the
end of the line, in which case the character behind the cursor is
deleted. By default, this is not bound to a key.
.TP
.B quoted\-insert (C\-q, C\-v)
Add the next character that you type to the line verbatim. This is
how to insert characters like \fBC\-q\fP, for example.
@ -798,6 +814,13 @@ of matches; a negative argument may be used to move backward
through the list.
This command is intended to be bound to \fBTAB\fP, but is unbound
by default.
.TP
.B delete\-char\-or\-list
Deletes the character under the cursor if not at the beginning or
end of the line (like \fBdelete-char\fP).
If at the end of the line, behaves identically to
\fBpossible-completions\fP.
This command is unbound by default.
.PD
.SS Keyboard Macros
.PP
@ -847,7 +870,7 @@ Undo all changes made to this line. This is like executing the
.B undo
command enough times to return the line to its initial state.
.TP
.B tilde\-expand (M\-~)
.B tilde\-expand (M\-&)
Perform tilde expansion on the current word.
.TP
.B set\-mark (C\-@, M-<space>)