Imported from ../bash-2.0.tar.gz.
This commit is contained in:
parent
726f63884d
commit
ccc6cda312
502 changed files with 91988 additions and 69123 deletions
376
INSTALL
376
INSTALL
|
@ -1,212 +1,288 @@
|
|||
File: bash.info, Node: Install, Next: Invoke, Prev: Built-in, Up: Top
|
||||
Basic Installation
|
||||
==================
|
||||
|
||||
Installing BASH
|
||||
***************
|
||||
These are generic installation instructions for Bash.
|
||||
|
||||
To install BASH you simply type `make'. The BASH `Makefile' tries
|
||||
to dynamically figure out what kind of machine and operating system
|
||||
you are using. It makes an educated guess based on the information
|
||||
it finds.
|
||||
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.
|
||||
|
||||
During the `make' process, a message is displayed describing what
|
||||
machine and operating system has been chosen for you. This
|
||||
information is also saved in the file `.machine' so you can look at
|
||||
it later.
|
||||
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.
|
||||
|
||||
Therefore, for most machines, simply follow this simple checklist
|
||||
to install BASH:
|
||||
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.9 or newer.
|
||||
|
||||
1. Type `make'. If you want to use GCC to compile bash, type
|
||||
`make CC=gcc CPPNAME='$(CC) -E''.
|
||||
The simplest way to compile Bash is:
|
||||
|
||||
2. Wait for the compilation to finish.
|
||||
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.
|
||||
|
||||
3. Type `./bash' to see if the compile worked.
|
||||
Running `configure' takes awhile. While running, it prints some
|
||||
messages telling which features it is checking for.
|
||||
|
||||
4. Type `make install prefix=/usr/gnu/' (or the appropriate root
|
||||
of your local GNU software installation tree) to copy bash to
|
||||
your binaries directory, assumed to be ${prefix}/bin. This will
|
||||
also attempt to install the manual pages under ${prefix}/man
|
||||
and the info file under ${prefix}/info.
|
||||
2. Type `make' to compile Bash and build the `bashbug' bug reporting
|
||||
script.
|
||||
|
||||
* Menu:
|
||||
3. Optionally, type `make tests' to run the Bash test suite.
|
||||
|
||||
* Problems:: What to do if BASH doesn't install quite so easily.
|
||||
4. Type `make install' to install `bash' and `bashbug'. This will
|
||||
also install the manual pages and Info file.
|
||||
|
||||
* Files:: Files used in the `make' process.
|
||||
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'.
|
||||
|
||||
* Porting:: Porting BASH to a new machine.
|
||||
Compilers and Options
|
||||
=====================
|
||||
|
||||
* Bugs:: What to do if you Discover Bugs in BASH.
|
||||
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:
|
||||
|
||||
|
||||
File: bash.info, Node: Problems, Next: Files, Prev: Install, Up: Install
|
||||
CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure
|
||||
|
||||
What if it Doesn't Install so Easily?
|
||||
=====================================
|
||||
On systems that have the `env' program, you can do it like this:
|
||||
|
||||
Sometimes BASH gets confused and will make the wrong assumptions
|
||||
about your machine or operating system. If the displayed
|
||||
information (also found in `.machine') is incorrect, you will have
|
||||
to edit the file `machines.h' and provide the appropriate
|
||||
information so that BASH can be installed correctly. The complete
|
||||
instructions for doing this are located in the `machines.h' file.
|
||||
env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure
|
||||
|
||||
However, if BASH says that your machine type is an
|
||||
"UNKNOWN_MACHINE", or BASH thought it knew something about your
|
||||
machine but was wrong, then reading the next few sections could
|
||||
be of use to you (*note Files::., and *note Porting::., for more
|
||||
information).
|
||||
The configuration process uses GCC to build Bash if it is available.
|
||||
|
||||
On the MIPSEB with the BSD universe, you must:
|
||||
Compiling For Multiple Architectures
|
||||
====================================
|
||||
|
||||
1) Place /bsd43/bin in your PATH before /bin
|
||||
2) Use $(CC) -E instead of /lib/cpp to build cpp-Makefile.
|
||||
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 `..'.
|
||||
|
||||
On SCO Xenix 386, you must:
|
||||
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.
|
||||
|
||||
1) Use $(CC) -E instead of /lib/cpp to build cpp-Makefile.
|
||||
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':
|
||||
|
||||
On Interactive Unix version 3 or 4, you must:
|
||||
bash /usr/gnu/src/bash-2.0/support/mkclone -s /usr/gnu/src/bash-2.0 .
|
||||
|
||||
1) Edit cpp-Makefile to remove either -O or -g from DEBUG_FLAGS
|
||||
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.
|
||||
|
||||
File: bash.info, Node: Files, Next: Porting, Prev: Problems, Up: Install
|
||||
Installation Names
|
||||
==================
|
||||
|
||||
Files Used in the `make' Process.
|
||||
=================================
|
||||
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'.
|
||||
|
||||
The following files are used during the installation of BASH, in
|
||||
the `make' process:
|
||||
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.
|
||||
|
||||
`Makefile'
|
||||
This is responsible for making the actual `Makefile' that is
|
||||
used to create Bash. It runs the C preprocessor (usually
|
||||
located in `/lib/cpp') on the file `cpp-Makefile', producing
|
||||
the output file `bash-Makefile'.
|
||||
Specifying the System Type
|
||||
==========================
|
||||
|
||||
`cpp-Makefile'
|
||||
This is a file of C comments and text. It contains a
|
||||
reasonable number of `ifdefs' which control what files get
|
||||
compiled and which flags are passed to the various C files
|
||||
comprising BASH. It includes files named `machines.h',
|
||||
`sysdefs.h', and `config.h'.
|
||||
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').
|
||||
|
||||
`machines.h'
|
||||
This file contains the basic compilation parameters for all of
|
||||
the machines to which BASH has been ported. This file
|
||||
consists of a series of conditional blocks, one per machine
|
||||
type.
|
||||
See the file `support/config.sub' for the possible values of each field.
|
||||
|
||||
These conditional blocks are depend upon the unique identifier
|
||||
that `cpp' has predefined for this machine. In some cases,
|
||||
additional information can be passed from `Makefile'. It is
|
||||
possible to pass information such as whether or not a
|
||||
particular file is available on this system, and so on.
|
||||
Sharing Defaults
|
||||
================
|
||||
|
||||
`sysdefs.h'
|
||||
This file is dynamically made at build time by running the shell
|
||||
script `support/mksydefs'. If there appears to be something wrong
|
||||
in this file, then edit the `mksysdefs' script, and mail the
|
||||
changes that you make to bash-maintainers@prep.ai.mit.edu.
|
||||
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.
|
||||
|
||||
`bash-Makefile'
|
||||
This is the output from the initial stage of `make'. It is a
|
||||
stripped down version of `cpp-Makefile' which is tailor-made
|
||||
for your machine and operating system. All subsequent `makes'
|
||||
use this file.
|
||||
Operation Controls
|
||||
==================
|
||||
|
||||
`configure' recognizes the following options to control how it operates.
|
||||
|
||||
File: bash.info, Node: Porting, Next: Bugs, Prev: Files, Up: Install
|
||||
`--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'.
|
||||
|
||||
What if You Have to Port to a New Machine?
|
||||
==========================================
|
||||
`--help'
|
||||
Print a summary of the options to `configure', and exit.
|
||||
|
||||
Sometimes you may want to port BASH to a new, previously
|
||||
unsupported machine. To do so you need to create a block in
|
||||
`machines.h' which is conditional based on a unique identifier
|
||||
present in your version of the C preprocessor.
|
||||
`--quiet'
|
||||
`--silent'
|
||||
`-q'
|
||||
Do not print messages saying which checks are being made.
|
||||
|
||||
If you don't know what that symbol is, you might try the following
|
||||
simple test:
|
||||
`--srcdir=DIR'
|
||||
Look for the Bash source code in directory DIR. Usually
|
||||
`configure' can determine that directory automatically.
|
||||
|
||||
echo "main () { }" > foo.c
|
||||
cc -v foo.c
|
||||
`--version'
|
||||
Print the version of Autoconf used to generate the `configure'
|
||||
script, and exit.
|
||||
|
||||
You are looking for `-DMACHINE', where `MACHINE' is an identifier
|
||||
for your machine. If you are very unlucky and your machine's C
|
||||
preprocessor doesn't have a unique identifier, you will have to
|
||||
define the identifier in Makefile manually.
|
||||
`configure' also accepts some other, not widely used, boilerplate
|
||||
options.
|
||||
|
||||
Let's say you have a machine from Yoyodyne Industries, called the
|
||||
YoYo. It runs a version of BSD, so it is reasonably compatible.
|
||||
However, the `cpp' on this YoYo machine doesn't define any unique
|
||||
identifiers. You should change the `Makefile' line for `CPPFLAGS'
|
||||
to:
|
||||
Optional Features
|
||||
=================
|
||||
|
||||
CPPFLAGS = -P -DYoYo
|
||||
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'.
|
||||
|
||||
Then, in `machines.h', you copy the block for `UNKNOWN_MACHINE',
|
||||
and change the conditional to;
|
||||
Here is a complete list of the `--enable-' and `--with-' options that
|
||||
the Bash `configure' recognizes.
|
||||
|
||||
#if defined (YoYo)
|
||||
`--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.
|
||||
|
||||
Inside of the YoYo block you define `M_MACHINE="YoYo"', and
|
||||
`M_OS=Bsd'. You also modify the existing defines to match your
|
||||
machine's software.
|
||||
`--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.
|
||||
|
||||
If BASH still won't compile, perhaps because of missing code that
|
||||
is required for your YoYo machine, you will have to write that code
|
||||
and place it within a conditional block based on YoYo.
|
||||
`--with-afs'
|
||||
Define if you are using the Andrew File System from Transarc.
|
||||
|
||||
Most machines aren't that difficult; simply redefining a few of the
|
||||
default values is sufficient. If you do run across a difficult
|
||||
machine, please send all fixes and changes to
|
||||
bash-maintainers@prep.ai.mit.edu in the form of context diffs:
|
||||
`--with-purify'
|
||||
Define this to use the Purify memory allocation checker from Pure
|
||||
Software.
|
||||
|
||||
diff -c orig-machines.h machines.h >machines.diffs
|
||||
`--enable-minimal-config'
|
||||
This produces a shell with minimal features, close to the
|
||||
historical Bourne shell.
|
||||
|
||||
Please include information about which version of the shell you have.
|
||||
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'.
|
||||
|
||||
For those machines which prove more difficult, or if you are not
|
||||
sure about where to start, the scripts in the `portbash' directory
|
||||
may prove helpful.
|
||||
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.
|
||||
|
||||
File: bash.info, Node: Bugs, Prev: Porting, Up: Install
|
||||
`--enable-job-control'
|
||||
This enables job control features, if the OS supports them.
|
||||
|
||||
Reporting Bugs
|
||||
==============
|
||||
`--enable-alias'
|
||||
Allow alias expansion and include the `alias' and `unalias'
|
||||
builtins.
|
||||
|
||||
If you find a bug in bash, you should report it. But first you
|
||||
should make sure that it really is a bug and that it appears in the
|
||||
latest version of BASH that is available.
|
||||
`--enable-readline'
|
||||
Include support for command-line editing and history with the Bash
|
||||
version of the Readline library.
|
||||
|
||||
Once you have ascertained that a bug really exists, you are welcome
|
||||
to mail in a bug report. If you have a fix, please mail that too!
|
||||
The program `bashbug' is used to submit bug reports.
|
||||
`--enable-history'
|
||||
Include command history and the `fc' and `history' builtin
|
||||
commands.
|
||||
|
||||
Suggestions and "philosophical" bug reports should be mailed to
|
||||
bug-bash@ai.mit.edu. Genuine bug reports should be mailed to the
|
||||
same place, or to bash-maintainers@prep.ai.mit.edu. The `bashbug'
|
||||
script sends its messages to bug-bash@prep.ai.mit.edu.
|
||||
`--enable-bang-history'
|
||||
Include support for `csh'-like history substitution.
|
||||
|
||||
*All* bug reports should include:
|
||||
`--enable-directory-stack'
|
||||
Include support for a `csh'-like directory stack and the `pushd',
|
||||
`popd', and `dirs' builtins.
|
||||
|
||||
* The version number of BASH.
|
||||
`--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.
|
||||
|
||||
* The hardware and operating system used.
|
||||
`--enable-process-substitution'
|
||||
This enables process substitution (*note Process Substitution::.)
|
||||
if the OS provides the necessary support.
|
||||
|
||||
* The compiler used to compile BASH.
|
||||
`--enable-prompt-string-decoding'
|
||||
Turn on the interpretation of a number of backslash-escaped
|
||||
characters in the `$PS1', `$PS2', `$PS3', and `$PS4' prompt
|
||||
strings.
|
||||
|
||||
* A description of the bug's behavior.
|
||||
`--enable-select'
|
||||
Include the `ksh' `select' builtin, which allows the generation of
|
||||
simple menus.
|
||||
|
||||
* A short script or "recipe" which demonstrates the bug.
|
||||
`--enable-help-builtin'
|
||||
Include the `help' builtin, which displays help on shell builtins
|
||||
and variables.
|
||||
|
||||
The `bashbug' program includes much of this information
|
||||
automatically. Without this information, it is generally not
|
||||
possible to successfully debug BASH. Usually, without this
|
||||
information, the bug won't manifest itself!
|
||||
`--enable-array-variables'
|
||||
Include support for one-dimensional array shell variables.
|
||||
|
||||
Discussion and questions about BASH in general (including
|
||||
questions about this documentation) can be sent to
|
||||
bash-maintainers@prep.ai.mit.edu.
|
||||
`--enable-dparen-arithmetic'
|
||||
Include support for the `ksh' `((...))' command.
|
||||
|
||||
`--enable-brace-expansion'
|
||||
Include `csh'-like brace expansion ( `b{a,b}c' ==> `bac bbc' ).
|
||||
|
||||
`--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-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.
|
||||
|
||||
`--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.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue