1996-12-23 17:02:34 +00:00
|
|
|
Basic Installation
|
|
|
|
==================
|
1996-08-26 18:22:31 +00:00
|
|
|
|
1997-06-05 14:59:13 +00:00
|
|
|
These are installation instructions for Bash.
|
1996-12-23 17:02:34 +00:00
|
|
|
|
|
|
|
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
|
1997-06-05 14:59:13 +00:00
|
|
|
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
|
1998-07-23 14:37:54 +00:00
|
|
|
the Bash distribution, for example `2.02'. `_patchlevel' should
|
|
|
|
contain the patch level of the Bash distribution, `1' for example. The
|
1997-06-05 14:59:13 +00:00
|
|
|
script `support/mkconffiles' has been provided to automate the creation
|
|
|
|
of these files.
|
1996-12-23 17:02:34 +00:00
|
|
|
|
|
|
|
The simplest way to compile Bash is:
|
|
|
|
|
|
|
|
1. `cd' to the directory containing the source code and type
|
|
|
|
`./configure' to configure Bash for your system. If you're using
|
|
|
|
`csh' on an old version of System V, you might need to type `sh
|
|
|
|
./configure' instead to prevent `csh' from trying to execute
|
|
|
|
`configure' itself.
|
|
|
|
|
|
|
|
Running `configure' takes awhile. While running, it prints some
|
|
|
|
messages telling which features it is checking for.
|
|
|
|
|
|
|
|
2. Type `make' to compile Bash and build the `bashbug' bug reporting
|
|
|
|
script.
|
|
|
|
|
|
|
|
3. Optionally, type `make tests' to run the Bash test suite.
|
|
|
|
|
|
|
|
4. Type `make install' to install `bash' and `bashbug'. This will
|
|
|
|
also install the manual pages and Info file.
|
|
|
|
|
|
|
|
You can remove the program binaries and object files from the source
|
|
|
|
code directory by typing `make clean'. To also remove the files that
|
|
|
|
`configure' created (so you can compile Bash for a different kind of
|
|
|
|
computer), type `make distclean'.
|
|
|
|
|
|
|
|
Compilers and Options
|
|
|
|
=====================
|
|
|
|
|
|
|
|
Some systems require unusual options for compilation or linking that
|
|
|
|
the `configure' script does not know about. You can give `configure'
|
|
|
|
initial values for variables by setting them in the environment. Using
|
|
|
|
a Bourne-compatible shell, you can do that on the command line like
|
|
|
|
this:
|
|
|
|
|
|
|
|
CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure
|
|
|
|
|
|
|
|
On systems that have the `env' program, you can do it like this:
|
|
|
|
|
|
|
|
env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure
|
|
|
|
|
|
|
|
The configuration process uses GCC to build Bash if it is available.
|
|
|
|
|
|
|
|
Compiling For Multiple Architectures
|
|
|
|
====================================
|
|
|
|
|
|
|
|
You can compile Bash for more than one kind of computer at the same
|
|
|
|
time, by placing the object files for each architecture in their own
|
|
|
|
directory. To do this, you must use a version of `make' that supports
|
|
|
|
the `VPATH' variable, such as GNU `make'. `cd' to the directory where
|
|
|
|
you want the object files and executables to go and run the `configure'
|
|
|
|
script from the source directory. You may need to supply the
|
|
|
|
`--srcdir=PATH' argument to tell `configure' where the source files
|
|
|
|
are. `configure' automatically checks for the source code in the
|
|
|
|
directory that `configure' is in and in `..'.
|
|
|
|
|
|
|
|
If you have to use a `make' that does not supports the `VPATH'
|
|
|
|
variable, you can compile Bash for one architecture at a time in the
|
|
|
|
source code directory. After you have installed Bash for one
|
|
|
|
architecture, use `make distclean' before reconfiguring for another
|
|
|
|
architecture.
|
|
|
|
|
|
|
|
Alternatively, if your system supports symbolic links, you can use the
|
|
|
|
`support/mkclone' script to create a build tree which has symbolic
|
|
|
|
links back to each file in the source directory. Here's an example
|
|
|
|
that creates a build directory in the current directory from a source
|
|
|
|
directory `/usr/gnu/src/bash-2.0':
|
|
|
|
|
|
|
|
bash /usr/gnu/src/bash-2.0/support/mkclone -s /usr/gnu/src/bash-2.0 .
|
|
|
|
|
|
|
|
The `mkclone' script requires Bash, so you must have already built Bash
|
|
|
|
for at least one architecture before you can create build directories
|
|
|
|
for other architectures.
|
|
|
|
|
|
|
|
Installation Names
|
|
|
|
==================
|
|
|
|
|
|
|
|
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'.
|
|
|
|
|
|
|
|
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.
|
|
|
|
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
|
|
|
|
`--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').
|
|
|
|
|
|
|
|
See the file `support/config.sub' for the possible values of each field.
|
|
|
|
|
|
|
|
Sharing Defaults
|
|
|
|
================
|
|
|
|
|
|
|
|
If you want to set default values for `configure' scripts to share, you
|
|
|
|
can create a site shell script called `config.site' that gives default
|
|
|
|
values for variables like `CC', `cache_file', and `prefix'. `configure'
|
|
|
|
looks for `PREFIX/share/config.site' if it exists, then
|
|
|
|
`PREFIX/etc/config.site' if it exists. Or, you can set the
|
|
|
|
`CONFIG_SITE' environment variable to the location of the site script.
|
|
|
|
A warning: the Bash `configure' looks for a site script, but not all
|
|
|
|
`configure' scripts do.
|
|
|
|
|
|
|
|
Operation Controls
|
|
|
|
==================
|
|
|
|
|
|
|
|
`configure' recognizes the following options to control how it operates.
|
|
|
|
|
|
|
|
`--cache-file=FILE'
|
|
|
|
Use and save the results of the tests in FILE instead of
|
|
|
|
`./config.cache'. Set FILE to `/dev/null' to disable caching, for
|
|
|
|
debugging `configure'.
|
|
|
|
|
|
|
|
`--help'
|
|
|
|
Print a summary of the options to `configure', and exit.
|
|
|
|
|
|
|
|
`--quiet'
|
|
|
|
`--silent'
|
|
|
|
`-q'
|
|
|
|
Do not print messages saying which checks are being made.
|
|
|
|
|
|
|
|
`--srcdir=DIR'
|
|
|
|
Look for the Bash source code in directory DIR. Usually
|
|
|
|
`configure' can determine that directory automatically.
|
|
|
|
|
|
|
|
`--version'
|
|
|
|
Print the version of Autoconf used to generate the `configure'
|
|
|
|
script, and exit.
|
|
|
|
|
|
|
|
`configure' also accepts some other, not widely used, boilerplate
|
|
|
|
options.
|
|
|
|
|
|
|
|
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'.
|
|
|
|
|
|
|
|
Here is a complete list of the `--enable-' and `--with-' options that
|
|
|
|
the Bash `configure' recognizes.
|
|
|
|
|
1997-06-05 14:59:13 +00:00
|
|
|
`--with-afs'
|
|
|
|
Define if you are using the Andrew File System from Transarc.
|
|
|
|
|
|
|
|
`--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.
|
1996-12-23 17:02:34 +00:00
|
|
|
|
|
|
|
`--with-glibc-malloc'
|
|
|
|
Use the GNU libc version of `malloc' in `lib/malloc/gmalloc.c'.
|
1998-04-17 19:52:44 +00:00
|
|
|
This is not the version of `malloc' that appears in glibc version
|
|
|
|
2, but a modified version of the `malloc' from glibc version 1.
|
|
|
|
This is somewhat slower than the default `malloc', but wastes less
|
|
|
|
space on a per-allocation basis, and will return memory to the
|
|
|
|
operating system under some circumstances.
|
1996-12-23 17:02:34 +00:00
|
|
|
|
1997-06-05 14:59:13 +00:00
|
|
|
`--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
|
1998-04-17 19:52:44 +00:00
|
|
|
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.
|
1996-12-23 17:02:34 +00:00
|
|
|
|
|
|
|
`--with-purify'
|
|
|
|
Define this to use the Purify memory allocation checker from Pure
|
|
|
|
Software.
|
|
|
|
|
|
|
|
`--enable-minimal-config'
|
|
|
|
This produces a shell with minimal features, close to the
|
|
|
|
historical Bourne shell.
|
|
|
|
|
1998-04-17 19:52:44 +00:00
|
|
|
There are several `--enable-' options that alter how Bash is compiled
|
|
|
|
and linked, rather than changing run-time features.
|
|
|
|
|
|
|
|
`--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.
|
|
|
|
|
1996-12-23 17:02:34 +00:00
|
|
|
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
|
|
|
|
does not provide the necessary support.
|
|
|
|
|
|
|
|
`--enable-alias'
|
|
|
|
Allow alias expansion and include the `alias' and `unalias'
|
|
|
|
builtins.
|
|
|
|
|
1997-06-05 14:59:13 +00:00
|
|
|
`--enable-array-variables'
|
|
|
|
Include support for one-dimensional array shell variables.
|
1996-12-23 17:02:34 +00:00
|
|
|
|
|
|
|
`--enable-bang-history'
|
|
|
|
Include support for `csh'-like history substitution.
|
|
|
|
|
1997-06-05 14:59:13 +00:00
|
|
|
`--enable-brace-expansion'
|
|
|
|
Include `csh'-like brace expansion ( `b{a,b}c' ==> `bac bbc' ).
|
|
|
|
|
|
|
|
`--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.
|
|
|
|
|
1998-04-17 19:52:44 +00:00
|
|
|
`--enable-cond-command'
|
|
|
|
Include support for the `[[' conditional command.
|
|
|
|
|
1996-12-23 17:02:34 +00:00
|
|
|
`--enable-directory-stack'
|
|
|
|
Include support for a `csh'-like directory stack and the `pushd',
|
|
|
|
`popd', and `dirs' builtins.
|
|
|
|
|
1997-06-05 14:59:13 +00:00
|
|
|
`--enable-disabled-builtins'
|
|
|
|
Allow builtin commands to be invoked via `builtin xxx' even after
|
|
|
|
`xxx' has been disabled using `enable -n xxx'. See *Note Bash
|
|
|
|
Builtins::, for details of the `builtin' and `enable' builtin
|
|
|
|
commands.
|
|
|
|
|
|
|
|
`--enable-dparen-arithmetic'
|
|
|
|
Include support for the `ksh' `((...))' command.
|
|
|
|
|
1998-04-17 19:52:44 +00:00
|
|
|
`--enable-extended-glob'
|
|
|
|
Include support for the extended pattern matching features
|
|
|
|
described above under *Note Pattern Matching::.
|
|
|
|
|
1997-06-05 14:59:13 +00:00
|
|
|
`--enable-help-builtin'
|
|
|
|
Include the `help' builtin, which displays help on shell builtins
|
|
|
|
and variables.
|
|
|
|
|
|
|
|
`--enable-history'
|
|
|
|
Include command history and the `fc' and `history' builtin
|
|
|
|
commands.
|
|
|
|
|
|
|
|
`--enable-job-control'
|
|
|
|
This enables job control features, if the OS supports them.
|
1996-12-23 17:02:34 +00:00
|
|
|
|
|
|
|
`--enable-process-substitution'
|
|
|
|
This enables process substitution (*note Process Substitution::.)
|
|
|
|
if the OS provides the necessary support.
|
|
|
|
|
|
|
|
`--enable-prompt-string-decoding'
|
|
|
|
Turn on the interpretation of a number of backslash-escaped
|
|
|
|
characters in the `$PS1', `$PS2', `$PS3', and `$PS4' prompt
|
|
|
|
strings.
|
|
|
|
|
1997-06-05 14:59:13 +00:00
|
|
|
`--enable-readline'
|
|
|
|
Include support for command-line editing and history with the Bash
|
|
|
|
version of the Readline library.
|
|
|
|
|
|
|
|
`--enable-restricted'
|
|
|
|
Include support for a "restricted shell". If this is enabled,
|
|
|
|
Bash, when called as `rbash', enters a restricted mode. See *Note
|
|
|
|
The Restricted Shell::, for a description of restricted mode.
|
|
|
|
|
1996-12-23 17:02:34 +00:00
|
|
|
`--enable-select'
|
|
|
|
Include the `ksh' `select' builtin, which allows the generation of
|
|
|
|
simple menus.
|
|
|
|
|
|
|
|
`--enable-usg-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.
|
|
|
|
|
|
|
|
The file `config.h.top' contains C Preprocessor `#define' statements
|
|
|
|
for options which are not settable from `configure'. Some of these are
|
|
|
|
not meant to be changed; beware of the consequences if you do. Read
|
|
|
|
the comments associated with each definition for more information about
|
|
|
|
its effect.
|