10.8 可选择的功能
Bash configure
有许多--enable-feature选项,其中feature表示Bash的可选部分。还有几个--with-package选项, 其中package是类似‘bash-malloc’或‘purify’的东西。 要关闭一个包的默认使用, 使用--without-package。要配置Bash而不使用默认启用的功能,使用--disable-feature。
下面是Bash configure
识别的--enable-和--with-选项的完整列表。
--with-afs
如果你使用的是Transarc公司的Andrew文件系统,请定义。
--with-bash-malloc
使用目录中lib/malloc的Bash版本的
malloc
。这不是出现在GNUlibc中的malloc
,而是最初从4.2 BSDmalloc
衍生出来的一个旧版本。这个malloc
非常快,但在每次分配时都会浪费一些空间。 这个选项在默认情况下是启用的。 NOTES文件包含了一个应该关闭这个选项的系统列表,configure
在一些系统中自动禁用这个选项。--with-curses
使用curses库而不是termcap库。如果你的系统有一个不充分或不完整的termcap数据库,应该提供这个库。
--with-gnu-malloc
是
--with-bash-malloc
的同义词。--with-installed-readline[=PREFIX]
定义这个以使Bash与本地安装的Readline版本链接,而不是lib/readline中的版本。这只适用于Readline 5.0及以后的版本。如果PREFIX是
yes
或者没有提供,configure
会使用make变量includedir
和libdir
的值,这些变量默认是prefix
的子目录,如果Readline不在标准的系统include和library目录中,就会找到它的安装版本。如果PREFIX是no
,Bash会与lib/readline中的版本链接。 如果PREFIX被设置为任何其他值,configure
会将其视为一个目录路径名,并在该目录的子目录中寻找Readline的安装版本(包括文件在PREFIX/include
,库在PREFIX/lib
)。--with-libintl-prefix[=PREFIX]
定义这一点是为了使Bash与本地安装的libintl库的版本相连接,而不是与lib/intl中的版本相连接。
--with-libiconv-prefix[=PREFIX]
定义这一点可以使Bash在PREFIX中寻找libiconv,而不是在标准的系统位置。Bash中没有包含任何版本。
--enable-minimal-config
这就产生了一个具有最小功能的shell,接近于历史上的Bourne shell。
有几个--enable-选项改变了Bash的编译、链接和安装方式,而不是改变了运行时的特性。
--enable-largefile
如果操作系统需要特殊的编译器选项来构建可以访问大文件的程序,则启用对大文件的支持。如果操作系统提供了对大文件的支持,默认情况下会启用该功能。
--enable-profiling
这将建立一个Bash二进制文件,在每次执行时产生剖析信息,由
gprof
来处理。--enable-separate-helpfiles
使用外部文件来显示
help
内建程序的文档,而不是在内部存储文本。--enable-static-link
这将导致Bash被静态链接,如果
gcc
被使用的话。 这可以用来构建一个作为root’shell "的版本。
‘minimal-config’选项可用于禁用以下所有选项,但它会被首先处理,因此可以使用‘enable-feature’启用个别选项。
除了‘alt-array-implementation’、‘disabled-builtins’、‘direxpand-default’、‘strict-posix-default’,以及‘xpg-echo-default’默认为启用,除非操作系统没有提供必要的支持。
--enable-alias
允许别名扩展,并包括
alias
和unalias
内置(见6.6 别名)。--enable-alt-array-implementation
这是用另一种数组实现方式来构建bash(见6.7 数组),它提供了更快的访问速度,但代价是要使用更多的内存(有时是很多倍,取决于数组的稀疏程度)。
--enable-arith-for-command
包括对另一种形式的
for
命令的支持,该命令的行为类似于C语言的for
语句(见5.1 循环结构)。--enable-array-variables
包括对一维数组壳变量的支持(见6.7 数组)。
--enable-bang-history
包括对
csh
类历史替换的支持(见9.3 历史扩展)。--enable-brace-expansion
包括
csh
类似大括号的扩展 (b{a,b}c
→bac bbc
).参见 大括号扩展, 以获得完整的描述。--enable-casemod-attributes
在
declare
内置和赋值语句中包括对修改大小写属性的支持。例如,带有uppercase
属性的变量在赋值时将被转换为大写字母。--enable-casemod-expansion
包括对修改大小写的单词扩展的支持。
--enable-command-timing
包括支持识别
time
为保留字,并显示time
之后的管道的时间统计(见3 管道)。 这允许对管道以及shell内置程序和函数进行时间统计。--enable-cond-command
包括对
[[
条件命令的支持。 (见5.2 条件性结构)。--enable-cond-regexp
包括支持在
[[
条件命令中使用‘=~’二进制操作符匹配POSIX正则表达式。 (见5.2 条件性结构)。--enable-coprocesses
包括对协处理和
coproc
保留字的支持(见3 管道)。--enable-debugger
包括对bash调试器的支持(单独分发)。
--enable-dev-fd-stat-broken
如果在/dev/fd/N上调用
stat
的结果与在文件描述符N上调用fstat
的结果不同,提供这个选项以启用一个变通方法。 这对测试文件属性的条件性命令有影响。--enable-direxpand-default
使
direxpand
shell选项(见2 Shopt 内置程序)在shell启动时被默认启用。 它通常被默认为禁用的。--enable-directory-stack
包括对类似于
csh
的目录栈以及pushd
、popd
和dirs
的内置支持(见6.8 目录堆栈)。--enable-disabled-builtins
允许通过‘builtin xxx’调用内置命令,即使在使用‘enable -n xxx’禁用了
xxx
之后。 请参阅4.2 Bash的内置命令,了解关于builtin
和enable
内置命令的细节。--enable-dparen-arithmetic
包括对
((…))
命令的支持(见5.2 条件性结构)。--enable-extended-glob
包括对上述8.1 模式匹配项下描述的扩展模式匹配功能的支持。
--enable-extended-glob-default
将上述2 Shopt 内置程序项下描述的
extglob
shell选项的默认值设置为启用。--enable-function-import
包括支持从环境中导入由另一个shell实例导出的函数定义。这个选项在默认情况下是启用的。
--enable-glob-asciirange-default
将上述2 Shopt 内置程序下描述的
globasciiranges
shell选项的默认值设置为启用。 这可以控制在模式匹配括号表达式中使用字符范围时的行为。--enable-help-builtin
包括
help
内建程序,它可以显示关于shell内建程序和变量的帮助(见4.2 Bash的内置命令)。--enable-history
包括命令历史和
fc
和history
的内置命令(见9.1 Bash 历史工具)。--enable-job-control
如果操作系统支持作业控制功能(见7 作业控制),这就可以启用这些功能。
--enable-multibyte
如果操作系统提供了必要的支持,这就可以实现对多字节字符的支持。
--enable-net-redirections
这使得在重定向中使用
/dev/tcp/host/port
和/dev/udp/host/port
形式的文件名时能够得到特殊的处理(见重定向)。--enable-process-substitution
如果操作系统提供了必要的支持,这就可以实现进程替换(见6 进程替换)。
--enable-progcomp
启用可编程完成工具(见可编程完成)。 如果没有启用Readline,这个选项就没有作用。
--enable-prompt-string-decoding
打开对
$PS0
、$PS1
、$PS2
和$PS4
提示字符串中一些反斜线转义字符的解释。参见6.9 控制提示符,以获得提示符字符串转义序列的完整列表。--enable-readline
包括用Bash版本的Readline库来支持命令行编辑和历史记录(见8 命令行的编辑)。
--enable-restricted
包括对限制性shell的支持。如果启用了这个功能,Bash在以
rbash
的方式被调用时,会进入一个受限模式。参见6.10 受限制的shell,以了解限制性模式的描述。--enable-select
包括
select
复合命令,它允许生成简单的菜单(见5.2 条件性结构)。--enable-single-help-strings
将
help
内建程序所显示的文本存储为每个帮助主题的一个字符串。如果你的编译器不能处理很长的字符串字数,你可能需要禁用它。--enable-strict-posix-default
使Bash默认符合POSIX的要求(见6.11 Bash的POSIX模式)。
--enable-translatable-strings
启用对
$"string"
可翻译字符串的支持(见Local-Specific Translation)。--enable-usg-echo-default
是
--enable-xpg-echo-default
的同义词。--enable-xpg-echo-default
使
echo
内置程序默认展开反斜线转义的字符,而不需要-e选项。 这将xpg_echo
外壳选项的默认值设置为on
,这使得Bashecho
的行为更像《单一Unix规范》第3版中指定的版本。 参见4.2 Bash的内置命令,以了解echo
所识别的转义序列的描述。
文件config-top.h包含了C预处理程序‘#define’语句,用于不能从configure
设置的选项。其中一些是不能改变的;如果你这样做,要小心后果。阅读与每个定义相关的注释,以了解更多关于其效果的信息。