mirror of https://github.com/n-hys/bash.git
446 lines
18 KiB
Plaintext
446 lines
18 KiB
Plaintext
Basic Installation
|
|
==================
|
|
|
|
These are installation instructions for Bash.
|
|
|
|
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 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
|
|
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.
|
|
|
|
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-4.2$ ./configure --help
|
|
|
|
at the Bash prompt in your Bash source directory.
|
|
|
|
If you want to build Bash in a directory separate from the source
|
|
directory - to build for multiple architectures, for example - just use
|
|
the full path to the configure script. The following commands will
|
|
build bash in a directory under '/usr/local/build' from the source code
|
|
in '/usr/local/src/bash-4.4':
|
|
|
|
mkdir /usr/local/build/bash-4.4
|
|
cd /usr/local/build/bash-4.4
|
|
bash /usr/local/src/bash-4.4/configure
|
|
make
|
|
|
|
See *note Compiling For Multiple Architectures:: for more information
|
|
about building in a directory separate from the source.
|
|
|
|
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.ac' is used to create 'configure' by a program
|
|
called Autoconf. You only need 'configure.ac' 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
|
|
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 (*note Basic Installation::). 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', 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', '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 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.,
|
|
'i386-unknown-freebsd4.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. '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 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-gnu-malloc'
|
|
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
|
|
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.unix.org/version2/whatsnew/lfs20mar.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',
|
|
'direxpand-default', and '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 (*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 (*note
|
|
Arrays::).
|
|
|
|
'--enable-bang-history'
|
|
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-casemod-attributes'
|
|
Include support for case-modifying attributes in the 'declare'
|
|
builtin and assignment statements. Variables with the UPPERCASE
|
|
attribute, for example, will have their values converted to
|
|
uppercase upon assignment.
|
|
|
|
'--enable-casemod-expansion'
|
|
Include support for case-modifying word expansions.
|
|
|
|
'--enable-command-timing'
|
|
Include support for recognizing 'time' as a reserved word and for
|
|
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-coprocesses'
|
|
Include support for coprocesses and the 'coproc' reserved word
|
|
(*note Pipelines::).
|
|
|
|
'--enable-debugger'
|
|
Include support for the bash debugger (distributed separately).
|
|
|
|
'--enable-dev-fd-stat-broken'
|
|
If calling 'stat' on /dev/fd/N returns different results than
|
|
calling 'fstat' on file descriptor N, supply this option to enable
|
|
a workaround. This has implications for conditional commands that
|
|
test file attributes.
|
|
|
|
'--enable-direxpand-default'
|
|
Cause the 'direxpand' shell option (*note The Shopt Builtin::) to
|
|
be enabled by default when the shell starts. It is normally
|
|
disabled by default.
|
|
|
|
'--enable-directory-stack'
|
|
Include support for a 'csh'-like directory stack and the 'pushd',
|
|
'popd', and 'dirs' builtins (*note The Directory Stack::).
|
|
|
|
'--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 '((...))' command (*note Conditional
|
|
Constructs::).
|
|
|
|
'--enable-extended-glob'
|
|
Include support for the extended pattern matching features
|
|
described above under *note Pattern Matching::.
|
|
|
|
'--enable-extended-glob-default'
|
|
Set the default value of the EXTGLOB shell option described above
|
|
under *note The Shopt Builtin:: to be enabled.
|
|
|
|
'--enable-function-import'
|
|
Include support for importing function definitions exported by
|
|
another instance of the shell from the environment. This option is
|
|
enabled by default.
|
|
|
|
'--enable-glob-asciirange-default'
|
|
Set the default value of the GLOBASCIIRANGES shell option described
|
|
above under *note The Shopt Builtin:: to be enabled. This controls
|
|
the behavior of character ranges when used in pattern matching
|
|
bracket expressions.
|
|
|
|
'--enable-help-builtin'
|
|
Include the 'help' builtin, which displays help on shell builtins
|
|
and variables (*note Bash Builtins::).
|
|
|
|
'--enable-history'
|
|
Include command history and the 'fc' and 'history' builtin commands
|
|
(*note Bash History Facilities::).
|
|
|
|
'--enable-job-control'
|
|
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 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 '$PS0', '$PS1', '$PS2', and '$PS4' prompt
|
|
strings. See *note Controlling the 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 (*note Command Line Editing::).
|
|
|
|
'--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.
|
|
|
|
'--enable-select'
|
|
Include the 'select' compound command, 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 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-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 its
|
|
effect.
|