9.3初始化宏

宏:AS_BOURNE_兼容

将shell设置为与Bourne shell更兼容如果可能,由Posix标准化。这可能涉及设置环境变量、设置选项或类似具体实施行动。此宏已被弃用,因为AS_INIT系统已经调用它了。

宏:AS_信息

初始化M4sh环境。此宏调用m4 _输入,然后输出#! /垃圾桶/桶行,关于输出位置的通知生成的,并编写代码来清理其余部分的环境脚本。在其他初始化中,此设置外壳到外壳选择运行脚本(请参见配置_外壳)、和LC_全部确保C语言环境。最后,它将当前分流改为阀体.AS_信息由自动调用空调初始化AT_INIT(初始化),所以shell代码位于配置,配置状态、和测试套件所有人都能从消毒中受益shell环境。

宏:AS_INIT_生成 (文件,[评论])

发出shell代码以在中开始创建子shell脚本文件,包括更改文件可执行。此宏用从父脚本学到的信息填充子脚本(因此,发出的代码实际上是等效的,但效率更高,而不是由输出的代码AS_INIT系统,AS_BOURNE_兼容、和AS_外壳_清洁). 如果存在,评论输出靠近子级的开头,在shell初始化代码之前,为受参数扩展、命令替换和反斜杠影响报价单删除。这个父脚本应该检查此宏之后的退出状态,以防文件无法正确创建(例如,如果磁盘完全)。如果成功创建,则父脚本可以继续将额外的M4sh构造附加到子脚本中。

请注意,子脚本启动时没有打开日志文件,因此如果父脚本使用日志记录(请参阅AS_消息_LOG_FD),你必须暂时禁用任何使用日志文件的尝试,直到发出代码以打开子级中的日志。另一方面,如果父脚本具有AS_消息_FD重定向到其他地方1',则子脚本已经具有将stdout复制到的代码那个描述符。目前,建议从另一个脚本中编写M4sh shell脚本的习惯用法是:

AS_INIT_生成([文件],[[#我的子脚本。]])||{AS_ECHO([“创建子脚本失败”]);AS_EXIT;}m4_pushdef([AS_MESSAGE_LOG_FD])dnl猫>>“文件“<<\__EOF__#初始化AS_MESSAGE_LOG_FD的代码m4_popdef([AS_MESSAGE_LOG_FD])dnl#附加代码__电动势__

然而,随着M4sh接口的出现,这在未来可能会发生变化进一步稳定。

此外,请注意使用LINENO公司在子脚本中可以报告相对于其父脚本中位置的行号,即使在使用时AS_LINENO_准备,如果父脚本是无法找到正在工作的外壳LINENO公司支持。

宏:AS_LINENO_准备

查找支持特殊变量的shellLINENO公司,其中包含当前执行行的编号。此宏是由自动调用空调初始化在配置脚本中。

宏:AS_ME_准备

设置变量作为(_M)是当前执行的脚本。此宏由自动调用空调初始化在里面配置脚本。

宏:AS_TMPDIR系统 (前缀,[目录= ‘${TMPDIR:=/tmp}])

尽可能安全地在目录名称以开头前缀.前缀应该为2-4个字符,以便更容易识别的所有者目录。如果目录则值为TMPDIR公司将使用(默认为“/临时管理计划’). 成功后新创建的目录存储在shell变量中临时管理计划.打开错误,脚本被中止。

通常,此宏与一些退出陷阱结合使用,以删除创建的退出或中断时的目录及其内容。然而,有一个创建目录和名称之间的微小窗口shell实际上知道,因此在适当的时候中断可能保留临时目录。因此,使用前缀这样可以更容易地确定剩余的临时从中断的脚本中删除目录是安全的。

如果您设置TMPDIR=$tmp调用此宏后,您应该重置TMPDIR公司在删除创建的目录之前,为了避免破坏依赖于$TMPDIR(美元).

输出变量的使用$tmp美元“而不是在作为_'命名空间是历史的;它有着不幸的后果为了内部的任何其他目的重复使用这个通用名称您的脚本有可能打破任何旨在删除临时目录。

宏:AS_外壳_清洁

对shell进行适当的初始化配置脚本。这已经的影响AS_BOURNE_兼容,并设置一些其他配置测试可预测结果的环境变量。例如,它设置LC_全部更改为默认的C语言环境。请参见特殊外壳变量。此宏已弃用,因为AS_INIT系统已经调用它了。