| 1 | Basic Installation
|
|---|
| 2 | ==================
|
|---|
| 3 |
|
|---|
| 4 | These are installation instructions for Bash.
|
|---|
| 5 |
|
|---|
| 6 | The 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 |
|
|---|
| 25 | The `configure' shell script attempts to guess correct values for
|
|---|
| 26 | various system-dependent variables used during compilation. It uses
|
|---|
| 27 | those values to create a `Makefile' in each directory of the package
|
|---|
| 28 | (the top directory, the `builtins', `doc', and `support' directories,
|
|---|
| 29 | each directory under `lib', and several others). It also creates a
|
|---|
| 30 | `config.h' file containing system-dependent definitions. Finally, it
|
|---|
| 31 | creates a shell script named `config.status' that you can run in the
|
|---|
| 32 | future to recreate the current configuration, a file `config.cache'
|
|---|
| 33 | that saves the results of its tests to speed up reconfiguring, and a
|
|---|
| 34 | file `config.log' containing compiler output (useful mainly for
|
|---|
| 35 | debugging `configure'). If at some point `config.cache' contains
|
|---|
| 36 | results you don't want to keep, you may remove or edit it.
|
|---|
| 37 |
|
|---|
| 38 | To find out more about the options and arguments that the `configure'
|
|---|
| 39 | script understands, type
|
|---|
| 40 |
|
|---|
| 41 | bash-2.04$ ./configure --help
|
|---|
| 42 |
|
|---|
| 43 | at the Bash prompt in your Bash source directory.
|
|---|
| 44 |
|
|---|
| 45 | If you need to do unusual things to compile Bash, please try to figure
|
|---|
| 46 | out how `configure' could check whether or not to do them, and mail
|
|---|
| 47 | diffs or instructions to <bash-maintainers@gnu.org> so they can be
|
|---|
| 48 | considered for the next release.
|
|---|
| 49 |
|
|---|
| 50 | The file `configure.in' is used to create `configure' by a program
|
|---|
| 51 | called Autoconf. You only need `configure.in' if you want to change it
|
|---|
| 52 | or regenerate `configure' using a newer version of Autoconf. If you do
|
|---|
| 53 | this, make sure you are using Autoconf version 2.50 or newer.
|
|---|
| 54 |
|
|---|
| 55 | You can remove the program binaries and object files from the source
|
|---|
| 56 | code directory by typing `make clean'. To also remove the files that
|
|---|
| 57 | `configure' created (so you can compile Bash for a different kind of
|
|---|
| 58 | computer), type `make distclean'.
|
|---|
| 59 |
|
|---|
| 60 | Compilers and Options
|
|---|
| 61 | =====================
|
|---|
| 62 |
|
|---|
| 63 | Some systems require unusual options for compilation or linking that
|
|---|
| 64 | the `configure' script does not know about. You can give `configure'
|
|---|
| 65 | initial values for variables by setting them in the environment. Using
|
|---|
| 66 | a Bourne-compatible shell, you can do that on the command line like
|
|---|
| 67 | this:
|
|---|
| 68 |
|
|---|
| 69 | CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure
|
|---|
| 70 |
|
|---|
| 71 | On systems that have the `env' program, you can do it like this:
|
|---|
| 72 |
|
|---|
| 73 | env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure
|
|---|
| 74 |
|
|---|
| 75 | The configuration process uses GCC to build Bash if it is available.
|
|---|
| 76 |
|
|---|
| 77 | Compiling For Multiple Architectures
|
|---|
| 78 | ====================================
|
|---|
| 79 |
|
|---|
| 80 | You can compile Bash for more than one kind of computer at the same
|
|---|
| 81 | time, by placing the object files for each architecture in their own
|
|---|
| 82 | directory. To do this, you must use a version of `make' that supports
|
|---|
| 83 | the `VPATH' variable, such as GNU `make'. `cd' to the directory where
|
|---|
| 84 | you want the object files and executables to go and run the `configure'
|
|---|
| 85 | script from the source directory. You may need to supply the
|
|---|
| 86 | `--srcdir=PATH' argument to tell `configure' where the source files
|
|---|
| 87 | are. `configure' automatically checks for the source code in the
|
|---|
| 88 | directory that `configure' is in and in `..'.
|
|---|
| 89 |
|
|---|
| 90 | If you have to use a `make' that does not supports the `VPATH'
|
|---|
| 91 | variable, you can compile Bash for one architecture at a time in the
|
|---|
| 92 | source code directory. After you have installed Bash for one
|
|---|
| 93 | architecture, use `make distclean' before reconfiguring for another
|
|---|
| 94 | architecture.
|
|---|
| 95 |
|
|---|
| 96 | Alternatively, if your system supports symbolic links, you can use the
|
|---|
| 97 | `support/mkclone' script to create a build tree which has symbolic
|
|---|
| 98 | links back to each file in the source directory. Here's an example
|
|---|
| 99 | that creates a build directory in the current directory from a source
|
|---|
| 100 | directory `/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 |
|
|---|
| 104 | The `mkclone' script requires Bash, so you must have already built Bash
|
|---|
| 105 | for at least one architecture before you can create build directories
|
|---|
| 106 | for other architectures.
|
|---|
| 107 |
|
|---|
| 108 | Installation Names
|
|---|
| 109 | ==================
|
|---|
| 110 |
|
|---|
| 111 | By default, `make install' will install into `/usr/local/bin',
|
|---|
| 112 | `/usr/local/man', etc. You can specify an installation prefix other
|
|---|
| 113 | than `/usr/local' by giving `configure' the option `--prefix=PATH', or
|
|---|
| 114 | by specifying a value for the `DESTDIR' `make' variable when running
|
|---|
| 115 | `make install'.
|
|---|
| 116 |
|
|---|
| 117 | You can specify separate installation prefixes for
|
|---|
| 118 | architecture-specific files and architecture-independent files. If you
|
|---|
| 119 | give `configure' the option `--exec-prefix=PATH', `make install' will
|
|---|
| 120 | use PATH as the prefix for installing programs and libraries.
|
|---|
| 121 | Documentation and other data files will still use the regular prefix.
|
|---|
| 122 |
|
|---|
| 123 | Specifying the System Type
|
|---|
| 124 | ==========================
|
|---|
| 125 |
|
|---|
| 126 | There may be some features `configure' can not figure out
|
|---|
| 127 | automatically, but need to determine by the type of host Bash will run
|
|---|
| 128 | on. Usually `configure' can figure that out, but if it prints a
|
|---|
| 129 | message 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
|
|---|
| 131 | type, such as `sun4', or a canonical name with three fields:
|
|---|
| 132 | `CPU-COMPANY-SYSTEM' (e.g., `i386-unknown-freebsd4.2').
|
|---|
| 133 |
|
|---|
| 134 | See the file `support/config.sub' for the possible values of each field.
|
|---|
| 135 |
|
|---|
| 136 | Sharing Defaults
|
|---|
| 137 | ================
|
|---|
| 138 |
|
|---|
| 139 | If you want to set default values for `configure' scripts to share, you
|
|---|
| 140 | can create a site shell script called `config.site' that gives default
|
|---|
| 141 | values for variables like `CC', `cache_file', and `prefix'. `configure'
|
|---|
| 142 | looks 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.
|
|---|
| 145 | A warning: the Bash `configure' looks for a site script, but not all
|
|---|
| 146 | `configure' scripts do.
|
|---|
| 147 |
|
|---|
| 148 | Operation 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
|
|---|
| 175 | options. `configure --help' prints the complete list.
|
|---|
| 176 |
|
|---|
| 177 | Optional Features
|
|---|
| 178 | =================
|
|---|
| 179 |
|
|---|
| 180 | The Bash `configure' has a number of `--enable-FEATURE' options, where
|
|---|
| 181 | FEATURE indicates an optional part of Bash. There are also several
|
|---|
| 182 | `--with-PACKAGE' options, where PACKAGE is something like `bash-malloc'
|
|---|
| 183 | or `purify'. To turn off the default use of a package, use
|
|---|
| 184 | `--without-PACKAGE'. To configure Bash without a feature that is
|
|---|
| 185 | enabled by default, use `--disable-FEATURE'.
|
|---|
| 186 |
|
|---|
| 187 | Here is a complete list of the `--enable-' and `--with-' options that
|
|---|
| 188 | the 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 |
|
|---|
| 233 | There are several `--enable-' options that alter how Bash is compiled
|
|---|
| 234 | and 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 |
|
|---|
| 251 | The `minimal-config' option can be used to disable all of the following
|
|---|
| 252 | options, but it is processed first, so individual options may be
|
|---|
| 253 | enabled using `enable-FEATURE'.
|
|---|
| 254 |
|
|---|
| 255 | All of the following options except for `disabled-builtins' and
|
|---|
| 256 | `xpg-echo-default' are enabled by default, unless the operating system
|
|---|
| 257 | does 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 |
|
|---|
| 389 | The file `config-top.h' contains C Preprocessor `#define' statements
|
|---|
| 390 | for options which are not settable from `configure'. Some of these are
|
|---|
| 391 | not meant to be changed; beware of the consequences if you do. Read
|
|---|
| 392 | the comments associated with each definition for more information about
|
|---|
| 393 | its effect.
|
|---|