]> git.ipfire.org Git - thirdparty/bash.git/blame - INSTALL
Bash-5.2 patch 26: fix typo when specifying readline's custom color prefix
[thirdparty/bash.git] / INSTALL
CommitLineData
ccc6cda3
JA
1Basic Installation
2==================
726f6388 3
d166f048 4These are installation instructions for Bash.
ccc6cda3 5
bb70624e
JA
6The simplest way to compile Bash is:
7
a0c0a00f
CR
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.
bb70624e 13
a0c0a00f 14 Running 'configure' takes some time. While running, it prints
bb70624e
JA
15 messages telling which features it is checking for.
16
a0c0a00f 17 2. Type 'make' to compile Bash and build the 'bashbug' bug reporting
bb70624e
JA
18 script.
19
a0c0a00f 20 3. Optionally, type 'make tests' to run the Bash test suite.
bb70624e 21
a0c0a00f 22 4. Type 'make install' to install 'bash' and 'bashbug'. This will
74091dd4
CR
23 also install the manual pages and Info file, message translation
24 files, some supplemental documentation, a number of example
25 loadable builtin commands, and a set of header files for developing
26 loadable builtins. You may need additional privileges to install
27 'bash' to your desired destination, so 'sudo make install' might be
28 required. More information about controlling the locations where
29 'bash' and other files are installed is below (*note Installation
30 Names::).
bb70624e 31
a0c0a00f 32The 'configure' shell script attempts to guess correct values for
ccc6cda3 33various system-dependent variables used during compilation. It uses
a0c0a00f 34those values to create a 'Makefile' in each directory of the package
74091dd4
CR
35(the top directory, the 'builtins', 'doc', 'po', and 'support'
36directories, each directory under 'lib', and several others). It also
37creates a 'config.h' file containing system-dependent definitions.
38Finally, it creates a shell script named 'config.status' that you can
39run in the future to recreate the current configuration, a file
40'config.cache' that saves the results of its tests to speed up
41reconfiguring, and a file 'config.log' containing compiler output
42(useful mainly for debugging 'configure'). If at some point
43'config.cache' contains results you don't want to keep, you may remove
44or edit it.
a0c0a00f
CR
45
46To find out more about the options and arguments that the 'configure'
bb70624e
JA
47script understands, type
48
d233b485 49 bash-4.2$ ./configure --help
bb70624e
JA
50
51at the Bash prompt in your Bash source directory.
ccc6cda3 52
d233b485
CR
53If you want to build Bash in a directory separate from the source
54directory - to build for multiple architectures, for example - just use
55the full path to the configure script. The following commands will
56build bash in a directory under '/usr/local/build' from the source code
57in '/usr/local/src/bash-4.4':
58
59 mkdir /usr/local/build/bash-4.4
60 cd /usr/local/build/bash-4.4
61 bash /usr/local/src/bash-4.4/configure
62 make
63
64See *note Compiling For Multiple Architectures:: for more information
65about building in a directory separate from the source.
66
b72432fd 67If you need to do unusual things to compile Bash, please try to figure
a0c0a00f 68out how 'configure' could check whether or not to do them, and mail
b72432fd
JA
69diffs or instructions to <bash-maintainers@gnu.org> so they can be
70considered for the next release.
ccc6cda3 71
a0c0a00f
CR
72The file 'configure.ac' is used to create 'configure' by a program
73called Autoconf. You only need 'configure.ac' if you want to change it
74or regenerate 'configure' using a newer version of Autoconf. If you do
74091dd4 75this, make sure you are using Autoconf version 2.69 or newer.
ccc6cda3 76
ccc6cda3 77You can remove the program binaries and object files from the source
a0c0a00f
CR
78code directory by typing 'make clean'. To also remove the files that
79'configure' created (so you can compile Bash for a different kind of
80computer), type 'make distclean'.
81
ccc6cda3
JA
82Compilers and Options
83=====================
84
a0c0a00f
CR
85Some systems require unusual options for compilation or linking that the
86'configure' script does not know about. You can give 'configure'
ccc6cda3
JA
87initial values for variables by setting them in the environment. Using
88a Bourne-compatible shell, you can do that on the command line like
89this:
90
91 CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure
92
a0c0a00f 93On systems that have the 'env' program, you can do it like this:
ccc6cda3
JA
94
95 env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure
96
97The configuration process uses GCC to build Bash if it is available.
98
99Compiling For Multiple Architectures
100====================================
101
102You can compile Bash for more than one kind of computer at the same
103time, by placing the object files for each architecture in their own
a0c0a00f
CR
104directory. To do this, you must use a version of 'make' that supports
105the 'VPATH' variable, such as GNU 'make'. 'cd' to the directory where
106you want the object files and executables to go and run the 'configure'
d233b485
CR
107script from the source directory (*note Basic Installation::). You may
108need to supply the '--srcdir=PATH' argument to tell 'configure' where
109the source files are. 'configure' automatically checks for the source
110code in the directory that 'configure' is in and in '..'.
ccc6cda3 111
74091dd4 112If you have to use a 'make' that does not support the 'VPATH' variable,
a0c0a00f
CR
113you can compile Bash for one architecture at a time in the source code
114directory. After you have installed Bash for one architecture, use
115'make distclean' before reconfiguring for another architecture.
ccc6cda3
JA
116
117Alternatively, if your system supports symbolic links, you can use the
a0c0a00f
CR
118'support/mkclone' script to create a build tree which has symbolic links
119back to each file in the source directory. Here's an example that
120creates a build directory in the current directory from a source
121directory '/usr/gnu/src/bash-2.0':
ccc6cda3
JA
122
123 bash /usr/gnu/src/bash-2.0/support/mkclone -s /usr/gnu/src/bash-2.0 .
124
a0c0a00f 125The 'mkclone' script requires Bash, so you must have already built Bash
ccc6cda3
JA
126for at least one architecture before you can create build directories
127for other architectures.
128
129Installation Names
130==================
131
a0c0a00f 132By default, 'make install' will install into '/usr/local/bin',
74091dd4
CR
133'/usr/local/man', etc.; that is, the "installation prefix" defaults to
134'/usr/local'. You can specify an installation prefix other than
135'/usr/local' by giving 'configure' the option '--prefix=PATH', or by
136specifying a value for the 'prefix' 'make' variable when running 'make
137install' (e.g., 'make install prefix=PATH'). The 'prefix' variable
138provides a default for 'exec_prefix' and other variables used when
139installing bash.
a0c0a00f
CR
140
141You can specify separate installation prefixes for architecture-specific
142files and architecture-independent files. If you give 'configure' the
143option '--exec-prefix=PATH', 'make install' will use PATH as the prefix
144for installing programs and libraries. Documentation and other data
145files will still use the regular prefix.
ccc6cda3 146
74091dd4
CR
147If you would like to change the installation locations for a single run,
148you can specify these variables as arguments to 'make': 'make install
149exec_prefix=/' will install 'bash' and 'bashbug' into '/bin' instead of
150the default '/usr/local/bin'.
151
152If you want to see the files bash will install and where it will install
153them without changing anything on your system, specify the variable
154'DESTDIR' as an argument to 'make'. Its value should be the absolute
155directory path you'd like to use as the root of your sample installation
156tree. For example,
157
158 mkdir /fs1/bash-install
159 make install DESTDIR=/fs1/bash-install
160
161will install 'bash' into '/fs1/bash-install/usr/local/bin/bash', the
162documentation into directories within
163'/fs1/bash-install/usr/local/share', the example loadable builtins into
164'/fs1/bash-install/usr/local/lib/bash', and so on. You can use the
165usual 'exec_prefix' and 'prefix' variables to alter the directory paths
166beneath the value of 'DESTDIR'.
167
168The GNU Makefile standards provide a more complete description of these
169variables and their effects.
170
ccc6cda3
JA
171Specifying the System Type
172==========================
173
a0c0a00f 174There may be some features 'configure' can not figure out automatically,
74091dd4 175but needs to determine by the type of host Bash will run on. Usually
a0c0a00f
CR
176'configure' can figure that out, but if it prints a message saying it
177can not guess the host type, give it the '--host=TYPE' option. 'TYPE'
178can either be a short name for the system type, such as 'sun4', or a
179canonical name with three fields: 'CPU-COMPANY-SYSTEM' (e.g.,
180'i386-unknown-freebsd4.2').
ccc6cda3 181
a0c0a00f
CR
182See the file 'support/config.sub' for the possible values of each field.
183
ccc6cda3
JA
184Sharing Defaults
185================
186
a0c0a00f
CR
187If you want to set default values for 'configure' scripts to share, you
188can create a site shell script called 'config.site' that gives default
189values for variables like 'CC', 'cache_file', and 'prefix'. 'configure'
190looks for 'PREFIX/share/config.site' if it exists, then
191'PREFIX/etc/config.site' if it exists. Or, you can set the
192'CONFIG_SITE' environment variable to the location of the site script.
193A warning: the Bash 'configure' looks for a site script, but not all
194'configure' scripts do.
195
ccc6cda3
JA
196Operation Controls
197==================
198
a0c0a00f 199'configure' recognizes the following options to control how it operates.
ccc6cda3 200
a0c0a00f 201'--cache-file=FILE'
ccc6cda3 202 Use and save the results of the tests in FILE instead of
a0c0a00f
CR
203 './config.cache'. Set FILE to '/dev/null' to disable caching, for
204 debugging 'configure'.
ccc6cda3 205
a0c0a00f
CR
206'--help'
207 Print a summary of the options to 'configure', and exit.
ccc6cda3 208
a0c0a00f
CR
209'--quiet'
210'--silent'
211'-q'
ccc6cda3
JA
212 Do not print messages saying which checks are being made.
213
a0c0a00f 214'--srcdir=DIR'
ccc6cda3 215 Look for the Bash source code in directory DIR. Usually
a0c0a00f 216 'configure' can determine that directory automatically.
ccc6cda3 217
a0c0a00f
CR
218'--version'
219 Print the version of Autoconf used to generate the 'configure'
ccc6cda3
JA
220 script, and exit.
221
a0c0a00f
CR
222'configure' also accepts some other, not widely used, boilerplate
223options. 'configure --help' prints the complete list.
224
ccc6cda3
JA
225Optional Features
226=================
227
a0c0a00f 228The Bash 'configure' has a number of '--enable-FEATURE' options, where
b72432fd 229FEATURE indicates an optional part of Bash. There are also several
a0c0a00f
CR
230'--with-PACKAGE' options, where PACKAGE is something like 'bash-malloc'
231or 'purify'. To turn off the default use of a package, use
232'--without-PACKAGE'. To configure Bash without a feature that is
233enabled by default, use '--disable-FEATURE'.
ccc6cda3 234
a0c0a00f
CR
235Here is a complete list of the '--enable-' and '--with-' options that
236the Bash 'configure' recognizes.
ccc6cda3 237
a0c0a00f 238'--with-afs'
d166f048
JA
239 Define if you are using the Andrew File System from Transarc.
240
a0c0a00f
CR
241'--with-bash-malloc'
242 Use the Bash version of 'malloc' in the directory 'lib/malloc'.
243 This is not the same 'malloc' that appears in GNU libc, but an
244 older version originally derived from the 4.2 BSD 'malloc'. This
245 'malloc' is very fast, but wastes some space on each allocation.
246 This option is enabled by default. The 'NOTES' file contains a
95732b49 247 list of systems for which this should be turned off, and
a0c0a00f 248 'configure' disables this option automatically for a number of
95732b49 249 systems.
bb70624e 250
a0c0a00f 251'--with-curses'
d166f048
JA
252 Use the curses library instead of the termcap library. This should
253 be supplied if your system has an inadequate or incomplete termcap
254 database.
ccc6cda3 255
a0c0a00f
CR
256'--with-gnu-malloc'
257 A synonym for '--with-bash-malloc'.
ccc6cda3 258
a0c0a00f 259'--with-installed-readline[=PREFIX]'
bb70624e 260 Define this to make Bash link with a locally-installed version of
a0c0a00f
CR
261 Readline rather than the version in 'lib/readline'. This works
262 only with Readline 5.0 and later versions. If PREFIX is 'yes' or
263 not supplied, 'configure' uses the values of the make variables
264 'includedir' and 'libdir', which are subdirectories of 'prefix' by
f73dda09
JA
265 default, to find the installed version of Readline if it is not in
266 the standard system include and library directories. If PREFIX is
a0c0a00f
CR
267 'no', Bash links with the version in 'lib/readline'. If PREFIX is
268 set to any other value, 'configure' treats it as a directory
f73dda09 269 pathname and looks for the installed version of Readline in
a0c0a00f
CR
270 subdirectories of that directory (include files in PREFIX/'include'
271 and the library in PREFIX/'lib').
b72432fd 272
74091dd4
CR
273'--with-libintl-prefix[=PREFIX]'
274 Define this to make Bash link with a locally-installed version of
275 the libintl library instead of the version in 'lib/intl'.
276
277'--with-libiconv-prefix[=PREFIX]'
278 Define this to make Bash look for libiconv in PREFIX instead of the
279 standard system locations. There is no version included with Bash.
ccc6cda3 280
a0c0a00f 281'--enable-minimal-config'
ccc6cda3
JA
282 This produces a shell with minimal features, close to the
283 historical Bourne shell.
284
74091dd4
CR
285There are several '--enable-' options that alter how Bash is compiled,
286linked, and installed, rather than changing run-time features.
cce855bc 287
a0c0a00f 288'--enable-largefile'
f73dda09 289 Enable support for large files
d233b485
CR
290 (http://www.unix.org/version2/whatsnew/lfs20mar.html) if the
291 operating system requires special compiler options to build
a0c0a00f
CR
292 programs which can access large files. This is enabled by default,
293 if the operating system provides large file support.
f73dda09 294
a0c0a00f 295'--enable-profiling'
cce855bc 296 This builds a Bash binary that produces profiling information to be
a0c0a00f 297 processed by 'gprof' each time it is executed.
cce855bc 298
74091dd4
CR
299'--enable-separate-helpfiles'
300 Use external files for the documentation displayed by the 'help'
301 builtin instead of storing the text internally.
302
a0c0a00f
CR
303'--enable-static-link'
304 This causes Bash to be linked statically, if 'gcc' is being used.
cce855bc
JA
305 This could be used to build a version to use as root's shell.
306
a0c0a00f
CR
307The 'minimal-config' option can be used to disable all of the following
308options, but it is processed first, so individual options may be enabled
309using 'enable-FEATURE'.
ccc6cda3 310
74091dd4
CR
311All of the following options except for 'alt-array-implementation',
312'disabled-builtins', 'direxpand-default', 'strict-posix-default', and
313'xpg-echo-default' are enabled by default, unless the operating system
314does not provide the necessary support.
ccc6cda3 315
a0c0a00f
CR
316'--enable-alias'
317 Allow alias expansion and include the 'alias' and 'unalias'
28ef6c31 318 builtins (*note Aliases::).
ccc6cda3 319
74091dd4
CR
320'--enable-alt-array-implementation'
321 This builds bash using an alternate implementation of arrays (*note
322 Arrays::) that provides faster access at the expense of using more
323 memory (sometimes many times more, depending on how sparse an array
324 is).
325
a0c0a00f
CR
326'--enable-arith-for-command'
327 Include support for the alternate form of the 'for' command that
328 behaves like the C language 'for' statement (*note Looping
28ef6c31 329 Constructs::).
bb70624e 330
a0c0a00f 331'--enable-array-variables'
b72432fd 332 Include support for one-dimensional array shell variables (*note
28ef6c31 333 Arrays::).
ccc6cda3 334
a0c0a00f
CR
335'--enable-bang-history'
336 Include support for 'csh'-like history substitution (*note History
28ef6c31 337 Interaction::).
ccc6cda3 338
a0c0a00f
CR
339'--enable-brace-expansion'
340 Include 'csh'-like brace expansion ( 'b{a,b}c' ==> 'bac bbc' ).
3185942a
JA
341 See *note Brace Expansion::, for a complete description.
342
a0c0a00f
CR
343'--enable-casemod-attributes'
344 Include support for case-modifying attributes in the 'declare'
74091dd4 345 builtin and assignment statements. Variables with the 'uppercase'
3185942a
JA
346 attribute, for example, will have their values converted to
347 uppercase upon assignment.
348
a0c0a00f 349'--enable-casemod-expansion'
3185942a 350 Include support for case-modifying word expansions.
d166f048 351
a0c0a00f
CR
352'--enable-command-timing'
353 Include support for recognizing 'time' as a reserved word and for
354 displaying timing statistics for the pipeline following 'time'
28ef6c31 355 (*note Pipelines::). This allows pipelines as well as shell
bb70624e 356 builtins and functions to be timed.
d166f048 357
a0c0a00f
CR
358'--enable-cond-command'
359 Include support for the '[[' conditional command. (*note
b80f6443
JA
360 Conditional Constructs::).
361
a0c0a00f 362'--enable-cond-regexp'
b80f6443 363 Include support for matching POSIX regular expressions using the
a0c0a00f 364 '=~' binary operator in the '[[' conditional command. (*note
28ef6c31 365 Conditional Constructs::).
cce855bc 366
a0c0a00f
CR
367'--enable-coprocesses'
368 Include support for coprocesses and the 'coproc' reserved word
3185942a
JA
369 (*note Pipelines::).
370
a0c0a00f 371'--enable-debugger'
95732b49
JA
372 Include support for the bash debugger (distributed separately).
373
d233b485
CR
374'--enable-dev-fd-stat-broken'
375 If calling 'stat' on /dev/fd/N returns different results than
376 calling 'fstat' on file descriptor N, supply this option to enable
377 a workaround. This has implications for conditional commands that
378 test file attributes.
379
a0c0a00f
CR
380'--enable-direxpand-default'
381 Cause the 'direxpand' shell option (*note The Shopt Builtin::) to
ac50fbac
CR
382 be enabled by default when the shell starts. It is normally
383 disabled by default.
384
a0c0a00f
CR
385'--enable-directory-stack'
386 Include support for a 'csh'-like directory stack and the 'pushd',
387 'popd', and 'dirs' builtins (*note The Directory Stack::).
ccc6cda3 388
a0c0a00f
CR
389'--enable-disabled-builtins'
390 Allow builtin commands to be invoked via 'builtin xxx' even after
391 'xxx' has been disabled using 'enable -n xxx'. See *note Bash
392 Builtins::, for details of the 'builtin' and 'enable' builtin
d166f048
JA
393 commands.
394
a0c0a00f
CR
395'--enable-dparen-arithmetic'
396 Include support for the '((...))' command (*note Conditional
28ef6c31 397 Constructs::).
d166f048 398
a0c0a00f 399'--enable-extended-glob'
cce855bc 400 Include support for the extended pattern matching features
3185942a 401 described above under *note Pattern Matching::.
cce855bc 402
a0c0a00f 403'--enable-extended-glob-default'
74091dd4 404 Set the default value of the 'extglob' shell option described above
0001803f
CR
405 under *note The Shopt Builtin:: to be enabled.
406
a0c0a00f
CR
407'--enable-function-import'
408 Include support for importing function definitions exported by
409 another instance of the shell from the environment. This option is
410 enabled by default.
411
412'--enable-glob-asciirange-default'
74091dd4
CR
413 Set the default value of the 'globasciiranges' shell option
414 described above under *note The Shopt Builtin:: to be enabled.
415 This controls the behavior of character ranges when used in pattern
416 matching bracket expressions.
ac50fbac 417
a0c0a00f
CR
418'--enable-help-builtin'
419 Include the 'help' builtin, which displays help on shell builtins
28ef6c31 420 and variables (*note Bash Builtins::).
d166f048 421
a0c0a00f
CR
422'--enable-history'
423 Include command history and the 'fc' and 'history' builtin commands
424 (*note Bash History Facilities::).
d166f048 425
a0c0a00f
CR
426'--enable-job-control'
427 This enables the job control features (*note Job Control::), if the
428 operating system supports them.
ccc6cda3 429
a0c0a00f 430'--enable-multibyte'
b80f6443
JA
431 This enables support for multibyte characters if the operating
432 system provides the necessary support.
433
a0c0a00f 434'--enable-net-redirections'
bb70624e 435 This enables the special handling of filenames of the form
a0c0a00f 436 '/dev/tcp/HOST/PORT' and '/dev/udp/HOST/PORT' when used in
28ef6c31 437 redirections (*note Redirections::).
bb70624e 438
a0c0a00f 439'--enable-process-substitution'
28ef6c31
JA
440 This enables process substitution (*note Process Substitution::) if
441 the operating system provides the necessary support.
ccc6cda3 442
a0c0a00f 443'--enable-progcomp'
95732b49
JA
444 Enable the programmable completion facilities (*note Programmable
445 Completion::). If Readline is not enabled, this option has no
446 effect.
447
a0c0a00f 448'--enable-prompt-string-decoding'
ccc6cda3 449 Turn on the interpretation of a number of backslash-escaped
d233b485 450 characters in the '$PS0', '$PS1', '$PS2', and '$PS4' prompt
ac50fbac
CR
451 strings. See *note Controlling the Prompt::, for a complete list
452 of prompt string escape sequences.
ccc6cda3 453
a0c0a00f 454'--enable-readline'
d166f048 455 Include support for command-line editing and history with the Bash
28ef6c31 456 version of the Readline library (*note Command Line Editing::).
d166f048 457
a0c0a00f 458'--enable-restricted'
d166f048 459 Include support for a "restricted shell". If this is enabled,
a0c0a00f 460 Bash, when called as 'rbash', enters a restricted mode. See *note
d166f048
JA
461 The Restricted Shell::, for a description of restricted mode.
462
a0c0a00f
CR
463'--enable-select'
464 Include the 'select' compound command, which allows the generation
495aee44 465 of simple menus (*note Conditional Constructs::).
ccc6cda3 466
a0c0a00f
CR
467'--enable-single-help-strings'
468 Store the text displayed by the 'help' builtin as a single string
95732b49 469 for each help topic. This aids in translating the text to
a0c0a00f
CR
470 different languages. You may need to disable this if your compiler
471 cannot handle very long string literals.
95732b49 472
a0c0a00f 473'--enable-strict-posix-default'
95732b49
JA
474 Make Bash POSIX-conformant by default (*note Bash POSIX Mode::).
475
74091dd4
CR
476'--enable-translatable-strings'
477 Enable support for '$"STRING"' translatable strings (*note Locale
478 Translation::).
479
a0c0a00f
CR
480'--enable-usg-echo-default'
481 A synonym for '--enable-xpg-echo-default'.
482
483'--enable-xpg-echo-default'
484 Make the 'echo' builtin expand backslash-escaped characters by
485 default, without requiring the '-e' option. This sets the default
486 value of the 'xpg_echo' shell option to 'on', which makes the Bash
487 'echo' behave more like the version specified in the Single Unix
488 Specification, version 3. *Note Bash Builtins::, for a description
489 of the escape sequences that 'echo' recognizes.
490
491The file 'config-top.h' contains C Preprocessor '#define' statements for
492options which are not settable from 'configure'. Some of these are not
493meant to be changed; beware of the consequences if you do. Read the
494comments associated with each definition for more information about its
495effect.