1Basic Installation 2================== 3 4These are installation instructions for Bash. 5 6The simplest way to compile Bash is: 7 8 1. `cd' to the directory containing the source code and type 9 `./configure' to configure Bash for your system. If you're using 10 `csh' on an old version of System V, you might need to type `sh 11 ./configure' instead to prevent `csh' from trying to execute 12 `configure' itself. 13 14 Running `configure' takes some time. While running, it prints 15 messages telling which features it is checking for. 16 17 2. Type `make' to compile Bash and build the `bashbug' bug reporting 18 script. 19 20 3. Optionally, type `make tests' to run the Bash test suite. 21 22 4. Type `make install' to install `bash' and `bashbug'. This will 23 also install the manual pages and Info file. 24 25The `configure' shell script attempts to guess correct values for 26various system-dependent variables used during compilation. It uses 27those values to create a `Makefile' in each directory of the package 28(the top directory, the `builtins', `doc', and `support' directories, 29each directory under `lib', and several others). It also creates a 30`config.h' file containing system-dependent definitions. Finally, it 31creates a shell script named `config.status' that you can run in the 32future to recreate the current configuration, a file `config.cache' 33that saves the results of its tests to speed up reconfiguring, and a 34file `config.log' containing compiler output (useful mainly for 35debugging `configure'). If at some point `config.cache' contains 36results you don't want to keep, you may remove or edit it. 37 38To find out more about the options and arguments that the `configure' 39script understands, type 40 41 bash-2.04$ ./configure --help 42 43at the Bash prompt in your Bash source directory. 44 45If you need to do unusual things to compile Bash, please try to figure 46out how `configure' could check whether or not to do them, and mail 47diffs or instructions to <bash-maintainers@gnu.org> so they can be 48considered for the next release. 49 50The file `configure.in' is used to create `configure' by a program 51called Autoconf. You only need `configure.in' if you want to change it 52or regenerate `configure' using a newer version of Autoconf. If you do 53this, make sure you are using Autoconf version 2.50 or newer. 54 55You can remove the program binaries and object files from the source 56code directory by typing `make clean'. To also remove the files that 57`configure' created (so you can compile Bash for a different kind of 58computer), type `make distclean'. 59 60Compilers and Options 61===================== 62 63Some systems require unusual options for compilation or linking that 64the `configure' script does not know about. You can give `configure' 65initial values for variables by setting them in the environment. Using 66a Bourne-compatible shell, you can do that on the command line like 67this: 68 69 CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure 70 71On systems that have the `env' program, you can do it like this: 72 73 env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure 74 75The configuration process uses GCC to build Bash if it is available. 76 77Compiling For Multiple Architectures 78==================================== 79 80You can compile Bash for more than one kind of computer at the same 81time, by placing the object files for each architecture in their own 82directory. To do this, you must use a version of `make' that supports 83the `VPATH' variable, such as GNU `make'. `cd' to the directory where 84you want the object files and executables to go and run the `configure' 85script from the source directory. You may need to supply the 86`--srcdir=PATH' argument to tell `configure' where the source files 87are. `configure' automatically checks for the source code in the 88directory that `configure' is in and in `..'. 89 90If you have to use a `make' that does not supports the `VPATH' 91variable, you can compile Bash for one architecture at a time in the 92source code directory. After you have installed Bash for one 93architecture, use `make distclean' before reconfiguring for another 94architecture. 95 96Alternatively, if your system supports symbolic links, you can use the 97`support/mkclone' script to create a build tree which has symbolic 98links back to each file in the source directory. Here's an example 99that creates a build directory in the current directory from a source 100directory `/usr/gnu/src/bash-2.0': 101 102 bash /usr/gnu/src/bash-2.0/support/mkclone -s /usr/gnu/src/bash-2.0 . 103 104The `mkclone' script requires Bash, so you must have already built Bash 105for at least one architecture before you can create build directories 106for other architectures. 107 108Installation Names 109================== 110 111By default, `make install' will install into `/usr/local/bin', 112`/usr/local/man', etc. You can specify an installation prefix other 113than `/usr/local' by giving `configure' the option `--prefix=PATH', or 114by specifying a value for the `DESTDIR' `make' variable when running 115`make install'. 116 117You can specify separate installation prefixes for 118architecture-specific files and architecture-independent files. If you 119give `configure' the option `--exec-prefix=PATH', `make install' will 120use PATH as the prefix for installing programs and libraries. 121Documentation and other data files will still use the regular prefix. 122 123Specifying the System Type 124========================== 125 126There may be some features `configure' can not figure out 127automatically, but need to determine by the type of host Bash will run 128on. Usually `configure' can figure that out, but if it prints a 129message saying it can not guess the host type, give it the 130`--host=TYPE' option. `TYPE' can either be a short name for the system 131type, such as `sun4', or a canonical name with three fields: 132`CPU-COMPANY-SYSTEM' (e.g., `i386-unknown-freebsd4.2'). 133 134See the file `support/config.sub' for the possible values of each field. 135 136Sharing Defaults 137================ 138 139If you want to set default values for `configure' scripts to share, you 140can create a site shell script called `config.site' that gives default 141values for variables like `CC', `cache_file', and `prefix'. `configure' 142looks for `PREFIX/share/config.site' if it exists, then 143`PREFIX/etc/config.site' if it exists. Or, you can set the 144`CONFIG_SITE' environment variable to the location of the site script. 145A warning: the Bash `configure' looks for a site script, but not all 146`configure' scripts do. 147 148Operation Controls 149================== 150 151`configure' recognizes the following options to control how it operates. 152 153`--cache-file=FILE' 154 Use and save the results of the tests in FILE instead of 155 `./config.cache'. Set FILE to `/dev/null' to disable caching, for 156 debugging `configure'. 157 158`--help' 159 Print a summary of the options to `configure', and exit. 160 161`--quiet' 162`--silent' 163`-q' 164 Do not print messages saying which checks are being made. 165 166`--srcdir=DIR' 167 Look for the Bash source code in directory DIR. Usually 168 `configure' can determine that directory automatically. 169 170`--version' 171 Print the version of Autoconf used to generate the `configure' 172 script, and exit. 173 174`configure' also accepts some other, not widely used, boilerplate 175options. `configure --help' prints the complete list. 176 177Optional Features 178================= 179 180The Bash `configure' has a number of `--enable-FEATURE' options, where 181FEATURE indicates an optional part of Bash. There are also several 182`--with-PACKAGE' options, where PACKAGE is something like `bash-malloc' 183or `purify'. To turn off the default use of a package, use 184`--without-PACKAGE'. To configure Bash without a feature that is 185enabled by default, use `--disable-FEATURE'. 186 187Here is a complete list of the `--enable-' and `--with-' options that 188the Bash `configure' recognizes. 189 190`--with-afs' 191 Define if you are using the Andrew File System from Transarc. 192 193`--with-bash-malloc' 194 Use the Bash version of `malloc' in the directory `lib/malloc'. 195 This is not the same `malloc' that appears in GNU libc, but an 196 older version originally derived from the 4.2 BSD `malloc'. This 197 `malloc' is very fast, but wastes some space on each allocation. 198 This option is enabled by default. The `NOTES' file contains a 199 list of systems for which this should be turned off, and 200 `configure' disables this option automatically for a number of 201 systems. 202 203`--with-curses' 204 Use the curses library instead of the termcap library. This should 205 be supplied if your system has an inadequate or incomplete termcap 206 database. 207 208`--with-gnu-malloc' 209 A synonym for `--with-bash-malloc'. 210 211`--with-installed-readline[=PREFIX]' 212 Define this to make Bash link with a locally-installed version of 213 Readline rather than the version in `lib/readline'. This works 214 only with Readline 5.0 and later versions. If PREFIX is `yes' or 215 not supplied, `configure' uses the values of the make variables 216 `includedir' and `libdir', which are subdirectories of `prefix' by 217 default, to find the installed version of Readline if it is not in 218 the standard system include and library directories. If PREFIX is 219 `no', Bash links with the version in `lib/readline'. If PREFIX is 220 set to any other value, `configure' treats it as a directory 221 pathname and looks for the installed version of Readline in 222 subdirectories of that directory (include files in 223 PREFIX/`include' and the library in PREFIX/`lib'). 224 225`--with-purify' 226 Define this to use the Purify memory allocation checker from 227 Rational Software. 228 229`--enable-minimal-config' 230 This produces a shell with minimal features, close to the 231 historical Bourne shell. 232 233There are several `--enable-' options that alter how Bash is compiled 234and linked, rather than changing run-time features. 235 236`--enable-largefile' 237 Enable support for large files 238 (http://www.sas.com/standards/large_file/x_open.20Mar96.html) if 239 the operating system requires special compiler options to build 240 programs which can access large files. This is enabled by 241 default, if the operating system provides large file support. 242 243`--enable-profiling' 244 This builds a Bash binary that produces profiling information to be 245 processed by `gprof' each time it is executed. 246 247`--enable-static-link' 248 This causes Bash to be linked statically, if `gcc' is being used. 249 This could be used to build a version to use as root's shell. 250 251The `minimal-config' option can be used to disable all of the following 252options, but it is processed first, so individual options may be 253enabled using `enable-FEATURE'. 254 255All of the following options except for `disabled-builtins' and 256`xpg-echo-default' are enabled by default, unless the operating system 257does not provide the necessary support. 258 259`--enable-alias' 260 Allow alias expansion and include the `alias' and `unalias' 261 builtins (*note Aliases::). 262 263`--enable-arith-for-command' 264 Include support for the alternate form of the `for' command that 265 behaves like the C language `for' statement (*note Looping 266 Constructs::). 267 268`--enable-array-variables' 269 Include support for one-dimensional array shell variables (*note 270 Arrays::). 271 272`--enable-bang-history' 273 Include support for `csh'-like history substitution (*note History 274 Interaction::). 275 276`--enable-brace-expansion' 277 Include `csh'-like brace expansion ( `b{a,b}c' ==> `bac bbc' ). 278 See *Note Brace Expansion::, for a complete description. 279 280`--enable-command-timing' 281 Include support for recognizing `time' as a reserved word and for 282 displaying timing statistics for the pipeline following `time' 283 (*note Pipelines::). This allows pipelines as well as shell 284 builtins and functions to be timed. 285 286`--enable-cond-command' 287 Include support for the `[[' conditional command. (*note 288 Conditional Constructs::). 289 290`--enable-cond-regexp' 291 Include support for matching POSIX regular expressions using the 292 `=~' binary operator in the `[[' conditional command. (*note 293 Conditional Constructs::). 294 295`--enable-debugger' 296 Include support for the bash debugger (distributed separately). 297 298`--enable-directory-stack' 299 Include support for a `csh'-like directory stack and the `pushd', 300 `popd', and `dirs' builtins (*note The Directory Stack::). 301 302`--enable-disabled-builtins' 303 Allow builtin commands to be invoked via `builtin xxx' even after 304 `xxx' has been disabled using `enable -n xxx'. See *Note Bash 305 Builtins::, for details of the `builtin' and `enable' builtin 306 commands. 307 308`--enable-dparen-arithmetic' 309 Include support for the `((...))' command (*note Conditional 310 Constructs::). 311 312`--enable-extended-glob' 313 Include support for the extended pattern matching features 314 described above under *Note Pattern Matching::. 315 316`--enable-help-builtin' 317 Include the `help' builtin, which displays help on shell builtins 318 and variables (*note Bash Builtins::). 319 320`--enable-history' 321 Include command history and the `fc' and `history' builtin 322 commands (*note Bash History Facilities::). 323 324`--enable-job-control' 325 This enables the job control features (*note Job Control::), if 326 the operating system supports them. 327 328`--enable-multibyte' 329 This enables support for multibyte characters if the operating 330 system provides the necessary support. 331 332`--enable-net-redirections' 333 This enables the special handling of filenames of the form 334 `/dev/tcp/HOST/PORT' and `/dev/udp/HOST/PORT' when used in 335 redirections (*note Redirections::). 336 337`--enable-process-substitution' 338 This enables process substitution (*note Process Substitution::) if 339 the operating system provides the necessary support. 340 341`--enable-progcomp' 342 Enable the programmable completion facilities (*note Programmable 343 Completion::). If Readline is not enabled, this option has no 344 effect. 345 346`--enable-prompt-string-decoding' 347 Turn on the interpretation of a number of backslash-escaped 348 characters in the `$PS1', `$PS2', `$PS3', and `$PS4' prompt 349 strings. See *Note Printing a Prompt::, for a complete list of 350 prompt string escape sequences. 351 352`--enable-readline' 353 Include support for command-line editing and history with the Bash 354 version of the Readline library (*note Command Line Editing::). 355 356`--enable-restricted' 357 Include support for a "restricted shell". If this is enabled, 358 Bash, when called as `rbash', enters a restricted mode. See *Note 359 The Restricted Shell::, for a description of restricted mode. 360 361`--enable-select' 362 Include the `select' builtin, which allows the generation of simple 363 menus (*note Conditional Constructs::). 364 365`--enable-separate-helpfiles' 366 Use external files for the documentation displayed by the `help' 367 builtin instead of storing the text internally. 368 369`--enable-single-help-strings' 370 Store the text displayed by the `help' builtin as a single string 371 for each help topic. This aids in translating the text to 372 different languages. You may need to disable this if your 373 compiler cannot handle very long string literals. 374 375`--enable-strict-posix-default' 376 Make Bash POSIX-conformant by default (*note Bash POSIX Mode::). 377 378`--enable-usg-echo-default' 379 A synonym for `--enable-xpg-echo-default'. 380 381`--enable-xpg-echo-default' 382 Make the `echo' builtin expand backslash-escaped characters by 383 default, without requiring the `-e' option. This sets the default 384 value of the `xpg_echo' shell option to `on', which makes the Bash 385 `echo' behave more like the version specified in the Single Unix 386 Specification, version 3. *Note Bash Builtins::, for a 387 description of the escape sequences that `echo' recognizes. 388 389The file `config-top.h' contains C Preprocessor `#define' statements 390for options which are not settable from `configure'. Some of these are 391not meant to be changed; beware of the consequences if you do. Read 392the comments associated with each definition for more information about 393its effect. 394