linux写config配置文件语言,用于编写configure.in的Config语言简介-1

本文介绍了Linux内核配置语言Config,用于编写config.in文件。Config语言不同于bash,有严格的语法和特定的语义,主要用于make config等配置程序。文章详细讲解了Config语言的基本元素、语句类型及其用法,包括文字语句、询问语句、字义语句、相关语句、未设置语句、选项语句、If语句、菜单块和Source语句。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.介绍

Config语言不是bash. Config语言是一种Linux内核配置语言. config.in and Config.in都是使用本语言编制而成.尽管它看起来,通常工作时,很象一个SH语言的子集,CONFIG语言有更加严格的语法和不同的语义.

CONFIG语言编程的基本指南:仅使用在CONFIG.IN文件中出现的编程语句.

2.说明

有四各配置程序可以解释和识别Config语言:

l         scripts/Configure        make config、make oldconfig、

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'语句。

一行结尾处的'\'表示续行。

'#'用于引入一个注释,该注释一直保持到该行的结尾.但是,如果是多行的形如'# ... is not set'的并不是注释,它们具有语义。

不能用;(分号)来开始一个新行。'if'语句中的处可以开始一个新行。

3.1基本的语法元素:

/prompt/——一个位于单引号或双引号内的字符串.如果字位于双引号内,它不需要任何$。

/word/——一个未加引号的字,位于单引号或双引号内的字符串。如果字未加引号或是位于双引号内的需要$号。

/symbol/——一个没有引号的字. symbol必须以CONFIG_*的形式出现。

/dep/——一个相关字.运行时/dep/必须等于"y", "m", "n",或""。

/expr/——一类bash的表达式,使用以下运算符:'='、'!='、'-a'、'-o'和'!'。

3.2 所有的语句:

文字语句:

mainmenu_name          /prompt/

comment               /prompt/

text                     /prompt/

询问语句:

bool            /prompt/ /symbol/

hex             /prompt/ /symbol/ /word/

int               /prompt/ /symbol/ /word/

string             /prompt/ /symbol/ /word/

tristate             /prompt/ /symbol/

字义语句:

define_bool        /symbol/ /word/

define_hex        /symbol/ /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/ /symbol/ /word/ /dep/ ...

dep_int           /prompt/ /symbol/ /word/ /dep/ ...

dep_string         /prompt/ /symbol/ /word/ /dep/ ...

dep_tristate         /prompt/ /symbol/ /dep/ ...

未设置语句:

unset                    /symbol/ ...

选项语句:

choice          /prompt/ /word/ /word/

nchoice         /prompt/ /symbol/ /prompt/ /symbol/ ...

If语句:

if [ /expr/ ] ; then /statement/

... fi

if [ /expr/ ] ; then /statement/

... else /statement/

... fi

菜单块:

mainmenu_option next_comment

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

comment 'CCP compressors for PPP are only built as modules.'

l         text /prompt/

向用户显示提示信息。不向输出文件中写入提示信息。仅mconfig在它的帮助中使用此命令。

例如:

# mconfig internal help text

text 'Here are all the mconfig command line options.'

l         bool /prompt/ /symbol/

此命令用于向用户显示/prompt/提示信息,并从用户接收数据,并把该数据赋给/symbol/。合法的输入值为"n"和"y"。

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值