These are installation instructions for Bash.
-The `configure' shell script attempts to guess correct values for
-various system-dependent variables used during compilation. It uses
-those values to create a `Makefile' in each directory of the package
-(the top directory, the `builtins' and `doc' directories, and the each
-directory under `lib'). It also creates a `config.h' file containing
-system-dependent definitions. Finally, it creates a shell script named
-`config.status' that you can run in the future to recreate the current
-configuration, a file `config.cache' that saves the results of its
-tests to speed up reconfiguring, and a file `config.log' containing
-compiler output (useful mainly for debugging `configure'). If at some
-point `config.cache' contains results you don't want to keep, you may
-remove or edit it.
-
-If you need to do unusual things to compile the package, please try to
-figure out how `configure' could check whether or not to do them, and
-mail diffs or instructions to `bash-maintainers@prep.ai.mit.edu' so
-they can be considered for the next release.
-
-The file `configure.in' is used to create `configure' by a program
-called Autoconf. You only need `configure.in' if you want to change it
-or regenerate `configure' using a newer version of Autoconf. If you do
-this, make sure you are using Autoconf version 2.10 or newer.
-
-If you need to change `configure.in' or regenerate `configure', you
-will need to create two files: `_distribution' and `_patchlevel'.
-`_distribution' should contain the major and minor version numbers of
-the Bash distribution, for example `2.01'. `_patchlevel' should
-contain the patch level of the Bash distribution, `0' for example. The
-script `support/mkconffiles' has been provided to automate the creation
-of these files.
-
The simplest way to compile Bash is:
1. `cd' to the directory containing the source code and type
./configure' instead to prevent `csh' from trying to execute
`configure' itself.
- Running `configure' takes awhile. While running, it prints some
+ Running `configure' takes some time. While running, it prints
messages telling which features it is checking for.
2. Type `make' to compile Bash and build the `bashbug' bug reporting
4. Type `make install' to install `bash' and `bashbug'. This will
also install the manual pages and Info file.
+The `configure' shell script attempts to guess correct values for
+various system-dependent variables used during compilation. It uses
+those values to create a `Makefile' in each directory of the package
+(the top directory, the `builtins', `doc', and `support' directories,
+each directory under `lib', and several others). It also creates a
+`config.h' file containing system-dependent definitions. Finally, it
+creates a shell script named `config.status' that you can run in the
+future to recreate the current configuration, a file `config.cache'
+that saves the results of its tests to speed up reconfiguring, and a
+file `config.log' containing compiler output (useful mainly for
+debugging `configure'). If at some point `config.cache' contains
+results you don't want to keep, you may remove or edit it.
+
+To find out more about the options and arguments that the `configure'
+script understands, type
+
+ bash-2.04$ ./configure --help
+
+at the Bash prompt in your Bash source directory.
+
+If you need to do unusual things to compile Bash, please try to figure
+out how `configure' could check whether or not to do them, and mail
+diffs or instructions to <bash-maintainers@gnu.org> so they can be
+considered for the next release.
+
+The file `configure.in' is used to create `configure' by a program
+called Autoconf. You only need `configure.in' if you want to change it
+or regenerate `configure' using a newer version of Autoconf. If you do
+this, make sure you are using Autoconf version 2.50 or newer.
+
You can remove the program binaries and object files from the source
code directory by typing `make clean'. To also remove the files that
`configure' created (so you can compile Bash for a different kind of
By default, `make install' will install into `/usr/local/bin',
`/usr/local/man', etc. You can specify an installation prefix other
-than `/usr/local' by giving `configure' the option `--prefix=PATH'.
+than `/usr/local' by giving `configure' the option `--prefix=PATH', or
+by specifying a value for the `DESTDIR' `make' variable when running
+`make install'.
You can specify separate installation prefixes for
architecture-specific files and architecture-independent files. If you
-give `configure' the option `--exec-prefix=PATH', the package will use
-`PATH' as the prefix for installing programs and libraries.
+give `configure' the option `--exec-prefix=PATH', `make install' will
+use PATH as the prefix for installing programs and libraries.
Documentation and other data files will still use the regular prefix.
Specifying the System Type
==========================
There may be some features `configure' can not figure out
-automatically, but needs to determine by the type of host the package
-will run on. Usually `configure' can figure that out, but if it prints
-a message saying it can not guess the host type, give it the
+automatically, but need to determine by the type of host Bash will run
+on. Usually `configure' can figure that out, but if it prints a
+message saying it can not guess the host type, give it the
`--host=TYPE' option. `TYPE' can either be a short name for the system
type, such as `sun4', or a canonical name with three fields:
-`CPU-COMPANY-SYSTEM' (e.g., `sparc-sun-sunos4.1.2').
+`CPU-COMPANY-SYSTEM' (e.g., `i386-unknown-freebsd4.2').
See the file `support/config.sub' for the possible values of each field.
script, and exit.
`configure' also accepts some other, not widely used, boilerplate
-options.
+options. `configure --help' prints the complete list.
Optional Features
=================
The Bash `configure' has a number of `--enable-FEATURE' options, where
-FEATURE indicates an optional part of the package. There are also
-several `--with-PACKAGE' options, where PACKAGE is something like
-`gnu-malloc' or `purify' (for the Purify memory allocation checker). To
-turn off the default use of a package, use `--without-PACKAGE'. To
-configure Bash without a feature that is enabled by default, use
-`--disable-FEATURE'.
+FEATURE indicates an optional part of Bash. There are also several
+`--with-PACKAGE' options, where PACKAGE is something like `bash-malloc'
+or `purify'. To turn off the default use of a package, use
+`--without-PACKAGE'. To configure Bash without a feature that is
+enabled by default, use `--disable-FEATURE'.
Here is a complete list of the `--enable-' and `--with-' options that
the Bash `configure' recognizes.
`--with-afs'
Define if you are using the Andrew File System from Transarc.
+`--with-bash-malloc'
+ Use the Bash version of `malloc' in the directory `lib/malloc'.
+ This is not the same `malloc' that appears in GNU libc, but an
+ older version originally derived from the 4.2 BSD `malloc'. This
+ `malloc' is very fast, but wastes some space on each allocation.
+ This option is enabled by default. The `NOTES' file contains a
+ list of systems for which this should be turned off, and
+ `configure' disables this option automatically for a number of
+ systems.
+
`--with-curses'
Use the curses library instead of the termcap library. This should
be supplied if your system has an inadequate or incomplete termcap
database.
-`--with-glibc-malloc'
- Use the GNU libc version of `malloc' in `lib/malloc/gmalloc.c'.
- This is somewhat slower than the default `malloc', but wastes
- considerably less space.
-
`--with-gnu-malloc'
- Use the GNU version of `malloc' in `lib/malloc/malloc.c'. This is
- not the same `malloc' that appears in GNU libc, but an older
- version derived from the 4.2 BSD `malloc'. This `malloc' is very
- fast, but wastes a lot of space. This option is enabled by
- default. The `NOTES' file contains a list of systems for which
- this should be turned off, and `configure' disables this option
- automatically for a number of systems.
+ A synonym for `--with-bash-malloc'.
+
+`--with-installed-readline[=PREFIX]'
+ 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 5.0 and later versions. If PREFIX is `yes' or
+ not supplied, `configure' uses the values of the make variables
+ `includedir' and `libdir', which are subdirectories of `prefix' by
+ default, to find the installed version of Readline if it is not in
+ the standard system include and library directories. If PREFIX is
+ `no', Bash links with the version in `lib/readline'. If PREFIX is
+ set to any other value, `configure' treats it as a directory
+ pathname and looks for the installed version of Readline in
+ subdirectories of that directory (include files in
+ PREFIX/`include' and the library in PREFIX/`lib').
`--with-purify'
- Define this to use the Purify memory allocation checker from Pure
- Software.
+ Define this to use the Purify memory allocation checker from
+ Rational Software.
`--enable-minimal-config'
This produces a shell with minimal features, close to the
historical Bourne shell.
+There are several `--enable-' options that alter how Bash is compiled
+and linked, rather than changing run-time features.
+
+`--enable-largefile'
+ Enable support for large files
+ (http://www.sas.com/standards/large_file/x_open.20Mar96.html) if
+ the operating system requires special compiler options to build
+ programs which can access large files. This is enabled by
+ default, if the operating system provides large file support.
+
+`--enable-profiling'
+ This builds a Bash binary that produces profiling information to be
+ processed by `gprof' each time it is executed.
+
+`--enable-static-link'
+ This causes Bash to be linked statically, if `gcc' is being used.
+ This could be used to build a version to use as root's shell.
+
The `minimal-config' option can be used to disable all of the following
options, but it is processed first, so individual options may be
enabled using `enable-FEATURE'.
All of the following options except for `disabled-builtins' and
-`usg-echo-default' are enabled by default, unless the operating system
+`xpg-echo-default' are enabled by default, unless the operating system
does not provide the necessary support.
`--enable-alias'
Allow alias expansion and include the `alias' and `unalias'
- builtins.
+ builtins (*note Aliases::).
+
+`--enable-arith-for-command'
+ Include support for the alternate form of the `for' command that
+ behaves like the C language `for' statement (*note Looping
+ Constructs::).
`--enable-array-variables'
- Include support for one-dimensional array shell variables.
+ Include support for one-dimensional array shell variables (*note
+ Arrays::).
`--enable-bang-history'
- Include support for `csh'-like history substitution.
+ Include support for `csh'-like history substitution (*note History
+ Interaction::).
`--enable-brace-expansion'
Include `csh'-like brace expansion ( `b{a,b}c' ==> `bac bbc' ).
+ See *Note Brace Expansion::, for a complete description.
`--enable-command-timing'
Include support for recognizing `time' as a reserved word and for
- displaying timing statistics for the pipeline following `time'.
- This allows pipelines as well as shell builtins and functions to
- be timed.
+ displaying timing statistics for the pipeline following `time'
+ (*note Pipelines::). This allows pipelines as well as shell
+ builtins and functions to be timed.
+
+`--enable-cond-command'
+ Include support for the `[[' conditional command. (*note
+ Conditional Constructs::).
+
+`--enable-cond-regexp'
+ Include support for matching POSIX regular expressions using the
+ `=~' binary operator in the `[[' conditional command. (*note
+ Conditional Constructs::).
+
+`--enable-debugger'
+ Include support for the bash debugger (distributed separately).
`--enable-directory-stack'
Include support for a `csh'-like directory stack and the `pushd',
- `popd', and `dirs' builtins.
+ `popd', and `dirs' builtins (*note The Directory Stack::).
`--enable-disabled-builtins'
Allow builtin commands to be invoked via `builtin xxx' even after
commands.
`--enable-dparen-arithmetic'
- Include support for the `ksh' `((...))' command.
+ Include support for the `((...))' command (*note Conditional
+ Constructs::).
+
+`--enable-extended-glob'
+ Include support for the extended pattern matching features
+ described above under *Note Pattern Matching::.
`--enable-help-builtin'
Include the `help' builtin, which displays help on shell builtins
- and variables.
+ and variables (*note Bash Builtins::).
`--enable-history'
Include command history and the `fc' and `history' builtin
- commands.
+ commands (*note Bash History Facilities::).
`--enable-job-control'
- This enables job control features, if the OS supports them.
+ This enables the job control features (*note Job Control::), if
+ the operating system supports them.
+
+`--enable-multibyte'
+ This enables support for multibyte characters if the operating
+ system provides the necessary support.
+
+`--enable-net-redirections'
+ This enables the special handling of filenames of the form
+ `/dev/tcp/HOST/PORT' and `/dev/udp/HOST/PORT' when used in
+ redirections (*note Redirections::).
`--enable-process-substitution'
- This enables process substitution (*note Process Substitution::.)
- if the OS provides the necessary support.
+ This enables process substitution (*note Process Substitution::) if
+ the operating system provides the necessary support.
+
+`--enable-progcomp'
+ Enable the programmable completion facilities (*note Programmable
+ Completion::). If Readline is not enabled, this option has no
+ effect.
`--enable-prompt-string-decoding'
Turn on the interpretation of a number of backslash-escaped
characters in the `$PS1', `$PS2', `$PS3', and `$PS4' prompt
- strings.
+ strings. See *Note Printing a Prompt::, for a complete list of
+ prompt string escape sequences.
`--enable-readline'
Include support for command-line editing and history with the Bash
- version of the Readline library.
+ version of the Readline library (*note Command Line Editing::).
`--enable-restricted'
Include support for a "restricted shell". If this is enabled,
The Restricted Shell::, for a description of restricted mode.
`--enable-select'
- Include the `ksh' `select' builtin, which allows the generation of
- simple menus.
+ Include the `select' builtin, which allows the generation of simple
+ menus (*note Conditional Constructs::).
+
+`--enable-separate-helpfiles'
+ Use external files for the documentation displayed by the `help'
+ builtin instead of storing the text internally.
+
+`--enable-single-help-strings'
+ Store the text displayed by the `help' builtin as a single string
+ for each help topic. This aids in translating the text to
+ different languages. You may need to disable this if your
+ compiler cannot handle very long string literals.
+
+`--enable-strict-posix-default'
+ Make Bash POSIX-conformant by default (*note Bash POSIX Mode::).
`--enable-usg-echo-default'
+ A synonym for `--enable-xpg-echo-default'.
+
+`--enable-xpg-echo-default'
Make the `echo' builtin expand backslash-escaped characters by
- default, without requiring the `-e' option. This makes the Bash
- `echo' behave more like the System V version.
+ default, without requiring the `-e' option. This sets the default
+ value of the `xpg_echo' shell option to `on', which makes the Bash
+ `echo' behave more like the version specified in the Single Unix
+ Specification, version 3. *Note Bash Builtins::, for a
+ description of the escape sequences that `echo' recognizes.
-The file `config.h.top' contains C Preprocessor `#define' statements
+The file `config-top.h' contains C Preprocessor `#define' statements
for options which are not settable from `configure'. Some of these are
not meant to be changed; beware of the consequences if you do. Read
the comments associated with each definition for more information about