| 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. |