10.8 可选特性(Optional Features)

Bash 的“configure”有一些“—enable-feature”的选项,其中的“feature”指的是 Bash 的可选部分。也有一些“—with-package”选项,其中的“package”是类似于像“bash-malloc”或“purity”。可使用“—without-package”选项来关闭默认使用的 package。使用“—without-feature”选项来配置 Bash 在默认情况下关闭某项特性。

下面列出了 Bash 的“configure”所认可的“—enable-”和“—with-”开头的选项。

—with-afs

定义使用Transarc的“Andrew File System”。

—with-bash-malloc

使用在“lib/malloc”目录里的Bash版本的malloc。其不同于出现在GNU libc中的malloc,但其最初的老版本是来自于4.2 BSD的malloc。该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”则使用变量“includedir”和“libdir”的值来寻找Readline的安装版本,如果其不包含在标准系统和库目录中。默认情况下,变量“includedir”和“libdir”的值是“prefix”的子目录。如果“PREFIX”是“no”,Bash会链接到“lib/readline”中的版本。如果“PREFIX”设置为任意其它的值,“configure”视其为一个目录路径名,并且在其子目录中查找Readline的可安装版本(包括在“PREFIX/include”中的文件和“PREFIX/lib”中的库文件)。

—with-purity

该选项定义的是使用“Rational Software”的“Purify”内存分配检查器。

—enable-minimal-config

该项会产生一个最小化特性的shell,近似于老版本的Bourne shell。

下面是一些以“—enable-”开头的选项,其改变了如何对 Bash 进行编译和链接,而不是改变运行时特性。

—enable-largefile

如果操作系统需要特殊编译选项来构建可访问大文件的程序,该项开启提供用于大文件(http://www.unix.org/version2/whatsnew/lfs20mar.html)支持的编译。如果操作系统提供大文件支持,该项默认是开启的。

—enable-profiling

该选项会构建一个可产生分析信息的Bash二进制程序,该信息可在每次执行gprof时被处理。

—enable-static-link

如果使用gcc进行编译,该项会使Bash进行静态链接。该项可用于构建使用root shell的版本。

“minimal-config”选项可将下列所有的特性选项关闭,但在处理选项时该项是首先被执行的。所以可以同时使用“enable-feature”来开启个别选项。

除了“disabled-builtins”、“direxpand-default”和“xpg-echo-default”,下列所有选项是默认开启的,除非操作系统不提供必要的支持。

—enable-alias

允许进行别名扩展并可以使用内建命令alias和unalias(参见6.6《别名》)。

—enable-arith-for-command

包含支持for命令的代替格式,其行为类似于C语言的for语句(参见3.2.5.1《循环结构》)。

—enable-array-variables

包含支持一维数组的shell变量(参见6.7《数组》)。

—enable-bang-history

包含支持类似于csh的历史替换(参见9.3《历史交互》)。

—enable-brace-expansion

包含类似于csh的大括号扩展(b{a,b}c → bac bbc)。详细说明参见3.5.1《大括号扩展》。

—enable-casemod-attributes

包含支持在内建命令declare中和赋值语句中的大小写修改属性。例如,在带有大写属性的变量在赋值后会将其值转换为大写。

—enable-casemod-expansion

包含支持大小写修改的单词扩展。

—enable-command-timing

包含支持将可将time识别为保留字,并且显示在time后跟随的管道的运行统计时间(参见3.2.3《管道》)。允许统计管道、内建命令及函数的运行时间。

—enable-cond-command

包含支持“[[”条件命令。(参见3.2.5.2《条件结构》)。

—enable-cond-regexp

包含支持在“[[”条件命令中使用二元操作符“=~”的POSIX正则表达式的匹配。参见3.2.5.2《条件结构》。

—enable-coprocesses

包含支持保留字“coproc”和协同处理(参见3.2.3《管道》)。

—enable-debugger

包含支持bash调试器(单独发布的)。

—enable-dev-fd-stat-broke

如果在“/dev/fd/N”上调用“stat”返回不同于在文件描述符N上调用的“fstat”的结果,提供该项来开启一个临时解决方案。该项暗指测试文件属性的条件命令。

—enable-direxpand-default

该项会使在shell启动时默认开启shell选项“direxpand”(参见4.3.2《内建命令shopt》)。该项默认是关闭的。

—enable-directory-stack

包含支持类似csh的目录堆栈和内建命令“pushd”、“popd”、“dirs”。(参见6.8《目录堆栈》)

—enable-disabled-builtins

在使用“enable -n xxx”关闭了“xxx”内建命令之后,允许通过“builtin xxx”来调用该内建命令。关于内建命令“builtin”和“enable”的详细说明,可参见4.2《Bash内建命令》。

—enable-dparen-arithmetic

包含支持“((...))”命令。(参见3.2.5.2《条件结构》)

—enable-extended-glob

包含支持在3.5.8.1《样式匹配》中描述的扩展样式匹配特性。

—enable-extended-glob-default

设置shell选项“extglob”的默认值为开启。(参见4.3.2《内建命令shopt》)

—enable—function-import

包含支持从环境中另一个shell实例导出的函数定义导入。该项默认开启。

—enable-glob-asciirange-default

设置shell选项“globasciiranges”(参见4.3.2《内建命令shopt》)的默认值为开启。该shell选项控制的是使用在大括号表达式样式匹配中的字符排列的行为。

—enable-help-builtin

包含支持用于显示shell内建命令和变量帮助的内建命令“help”。(参见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”形式的文件名的特殊处理,当其应用在重定向中时。(参见3.6《重定向》)

—enable-process-substitution

如果操作系统提供必要的支持,该项会开启进程替换。(参见3.5.6《进程替换》)

—enable-progcomp

开启可编程补全功能(参见8.6《可编程补全》)。如果没有开启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”,其允许生成一个简单的菜单(参见3.2.5.2《条件结构》)。

—enable-separate-helpfiles

使用外部文件来显示由内建命令“help”所产生的帮助文档来代替存储于内部的帮助文本。

—enable-single-help-strings

用于内建命令“help”显示帮助的文本,将每个帮助主题储存为单一字符串。其有助于将文本翻译为不同的语言。如果你的编译器不能处理非常长的字符串字符时,你可能需要关闭该项。

—enable-strict-posix-default

使Bash默认遵守POSIX。(参见6.11《Bash POSIX模式》)

—enable-usg-echo-default

是“--enable-xpg-echo-default”的代名词。

—enable-xpg-echo-default

使内建命令“echo”默认可扩展反斜线转义字符,而不需要给出“-e”选项。该项会将shell选项“xpg_echo”的默认值设置为“on”,这样会使Bash的“echo”行为更像是在“Single Unix Specification”中指定的版本3。可参见4.2《Bash内建命令》获取“echo”认可的转义序列的描述。

文件“config-top.h”所包含的 C 预处理“#define”语句所定义的选项是在“configure”中不可设置的。这就意味着这些选项中有些是不可更改的;如果你更改了,要小心其所产生的后果。阅读每一个定义相关的注释可获取更多关于其作用的说明。