aboutsummaryrefslogtreecommitdiffstats
path: root/doc
diff options
context:
space:
mode:
Diffstat (limited to 'doc')
-rw-r--r--doc/FAQ306
-rw-r--r--doc/INTRO2
-rw-r--r--doc/Makefile.in34
-rw-r--r--doc/README5
-rw-r--r--doc/bash.1102
-rw-r--r--doc/bashbug.14
-rw-r--r--doc/bashref.info402
-rw-r--r--doc/bashref.texi79
-rw-r--r--doc/readline.343
9 files changed, 608 insertions, 369 deletions
diff --git a/doc/FAQ b/doc/FAQ
index d191cb4..08037d8 100644
--- a/doc/FAQ
+++ b/doc/FAQ
@@ -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.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.
-Bash-2.02 has a number of new features. Here's a short list:
+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.
+
+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 "$@"
+ }
-17) Why doesn't bash treat brace expansions exactly like csh?
+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
diff --git a/doc/INTRO b/doc/INTRO
index fc6bce6..29f208a 100644
--- a/doc/INTRO
+++ b/doc/INTRO
@@ -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
diff --git a/doc/Makefile.in b/doc/Makefile.in
index 62e041d..f0794da 100644
--- a/doc/Makefile.in
+++ b/doc/Makefile.in
@@ -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 \
diff --git a/doc/README b/doc/README
index 932bf7f..e3a1d24 100644
--- a/doc/README
+++ b/doc/README
@@ -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'
diff --git a/doc/bash.1 b/doc/bash.1
index 9e60607..739d34d 100644
--- a/doc/bash.1
+++ b/doc/bash.1
@@ -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
diff --git a/doc/bashbug.1 b/doc/bashbug.1
index 39abaf2..971e4c4 100644
--- a/doc/bashbug.1
+++ b/doc/bashbug.1
@@ -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
diff --git a/doc/bashref.info b/doc/bashref.info
index 2ba11f0..01450d0 100644
--- a/doc/bashref.info
+++ b/doc/bashref.info
@@ -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
diff --git a/doc/bashref.texi b/doc/bashref.texi
index 854090e..4274005 100644
--- a/doc/bashref.texi
+++ b/doc/bashref.texi
@@ -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.
diff --git a/doc/readline.3 b/doc/readline.3
index bb9f759..6b36f2f 100644
--- a/doc/readline.3
+++ b/doc/readline.3
@@ -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>)