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”中不可设置的。这就意味着这些选项中有些是不可更改的;如果你更改了,要小心其所产生的后果。阅读每一个定义相关的注释可获取更多关于其作用的说明。