1、linux /m_pzhang 发表于2007-10-27, 21:29 1. 介绍 Config语言不是bash. Config语言是一种Linux内核配置语言. config.in and Config.in都是使用本语言编制而成. 尽管它看起来,通常工作时,很象一个SH语言的子集,CONFIG语言有更加严格的语法和不同的语义. CONFIG语言编程的基本指南:仅使用在CONFIG.IN文件中出现的编程语句. 2. 说明 有四个配置程序可以解释和识别Config语言: l scripts/Configure make config、make ol
2、dconfig、 l scripts/Menuconfig make menuconfig l scripts/tkparse make xconfig l mconfig (in development) 'Configure' 是一个bash脚本语言,它解释了Config.in文件;'Menuconfig'是另外一种bash脚本. 3. 语句 一个Config语言脚本是由一系列的语句构成的。共有21个简单的语句;一个'if'语句;菜单块和一个 'source'语句。 一行结尾
3、处的'\' 表示续行。 '#'用于引入一个注释, 该注释一直保持到该行的结尾. 但是,如果是多行的形如'# ... is not set'的并不是注释,它们具有语义。 不能用;(分号)来开始一个新行。 'if'语句中的处可以开始一个新行。 3.1基本的语法元素: /prompt/——一个位于单引号或双引号内的字符串. 如果字位于双引号内,它不需要任何$。 /word/——一个未加引号的字, 位于单引号或双引号内的字符串。如果字未加引号或是位于双引号内的需要$号。 /symbol/——一个没有引号的字. symbol必须以CONFIG_*的形式出现。
4、 /dep/ ——一个相关字. 运行时/dep/ 必须等于 "y", "m", "n",或 ""。 /expr/——一类bash的表达式,使用以下运算符:'='、 '!='、 '-a'、 '-o'和'!'。 3.2 所有的语句: 文字语句: mainmenu_name /prompt/ comment /prompt/ text /prompt/ 询问语句: bool /prompt
5、/ /symbol/ hex /prompt/ /symbol/ /word/ int /prompt/ /symbol/ /word/ string /prompt/ /symbol/ /word/ tristate /prompt/ /symbol/ 字义语句: define_bool /symbol/ /word/ define_hex /sym
6、bol/ /word/ define_int /symbol/ /word/ define_string /symbol/ /word/ define_tristate /symbol/ /word/ 相关语句: dep_bool /prompt/ /symbol/ /dep/ ... dep_mbool /prompt/ /symbol/ /dep/ ... dep_hex /prompt
7、/ /symbol/ /word/ /dep/ ... dep_int /prompt/ /symbol/ /word/ /dep/ ... dep_string /prompt/ /symbol/ /word/ /dep/ ... dep_tristate /prompt/ /symbol/ /dep/ ... 未设置语句: unset /symbol/ ... 选项语句: choice
8、 /prompt/ /word/ /word/ nchoice /prompt/ /symbol/ /prompt/ /symbol/ ... If语句: if [ /expr/ ] ; then /statement/ ... fi if [ /expr/ ] ; then /statement/ ... else /statement/ ... fi 菜单块: mainmenu_option next_commen
9、t comment /prompt/ /statement/ ... endmenu Source语句: source /word/ l mainmenu_name /prompt/ 用于指定本CONFIG语言文件顶层的名字。 例如: # arch/sparc/config.in mainmenu_name "Linux/SPARC Kernel Configuration" l comment /prompt/ 此语句用于在用户配置过程中向用户显示提示信息,同时在输出期间也把它返回给输出文件。注意:此处的prompt,象所有的prompt一样,是一个没有$符号、位于引号内的字符串。 'comment'并不用于对一个CONFIG语言的注释。它用于用户接口显示文字,以及向输出文件中写入输出信息。 例如: # drivers/net/Config.in






