Files
bash/INSTALL
2024-12-17 09:51:38 -05:00

506 lines
22 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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, message translation
files, some supplemental documentation, a number of example
loadable builtin commands, and a set of header files for developing
loadable builtins. You may need additional privileges to install
bash to your desired destination, which may require sudo make
install. More information about controlling the locations where
bash and other files are installed is below (*note Installation
Names::).
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, po, 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.69 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 support 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.; that is, the “installation prefix” defaults to
/usr/local. You can specify an installation prefix other than
/usr/local by giving configure the option --prefix=PATH, or by
specifying a value for the prefix make variable when running make
install (e.g., make install prefix=PATH). The prefix variable
provides a default for exec_prefix and other variables used when
installing Bash.
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.
If you would like to change the installation locations for a single run,
you can specify these variables as arguments to make: make install
exec_prefix=/ will install bash and bashbug into /bin instead of
the default /usr/local/bin.
If you want to see the files Bash will install and where it will install
them without changing anything on your system, specify the variable
DESTDIR as an argument to make. Its value should be the absolute
directory path you'd like to use as the root of your sample installation
tree. For example,
mkdir /fs1/bash-install
make install DESTDIR=/fs1/bash-install
will install bash into /fs1/bash-install/usr/local/bin/bash, the
documentation into directories within
/fs1/bash-install/usr/local/share, the example loadable builtins into
/fs1/bash-install/usr/local/lib/bash, and so on. You can use the
usual exec_prefix and prefix variables to alter the directory paths
beneath the value of DESTDIR.
The GNU Makefile standards provide a more complete description of these
variables and their effects.
Specifying the System Type
==========================
There may be some features configure can not figure out automatically,
but needs 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 afs. 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 a
custom version originally derived from the 4.2 BSD malloc. This
malloc is very fast, but wastes some space on each allocation,
though it uses several techniques to minimize the waste. 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. configure
usually chooses this automatically, since most systems include the
termcap functions in the curses library.
--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). The Bash default is to link with
a static library built in the lib/readline subdirectory of the
build directory.
--with-libintl-prefix[=PREFIX]
Define this to make Bash link with a locally-installed version of
the libintl library instead of the version in lib/intl.
--with-libiconv-prefix[=PREFIX]
Define this to make Bash look for libiconv in PREFIX instead of the
standard system locations. The Bash distribution does not include
this library.
--enable-minimal-config
This produces a shell with minimal features, closer to the
historical Bourne shell.
There are several --enable- options that alter how Bash is compiled,
linked, and installed, 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-separate-helpfiles
Use external files for the documentation displayed by the help
builtin instead of storing the text internally.
--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 alt-array-implementation,
disabled-builtins, direxpand-default, strict-posix-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-alt-array-implementation
This builds Bash using an alternate implementation of arrays (*note
Arrays::) that provides faster access at the expense of using more
memory (sometimes many times more, depending on how sparse an array
is).
--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-bash-source-fullpath-default
Set the default value of the bash_source_fullpath shell option
described above under *note The Shopt Builtin:: to be enabled.
This controls how filenames are assigned to the BASH_SOURCE array
variable.
--enable-brace-expansion
Include csh-like brace expansion ( b{a,b}cbac 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 timing pipelines, shell compound
commands, shell builtins, and shell functions, which an external
command cannot do easily.
--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-asciiranges-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
enters a restricted mode when called as rbash. See *note The
Restricted Shell::, for a description of restricted mode.
--enable-select
Include the select compound command, which allows generation of
simple menus (*note Conditional Constructs::).
--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-translatable-strings
Enable support for $"STRING" translatable strings (*note Locale
Translation::).
--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.