Bash脚本 - 编写init.d脚本

时间:2013-09-24 00:08:19

标签: bash init.d

我使用/etc/init.d/httpd作为init.d脚本的模板。我理解文件中发生的一切,除了以下行:

LANG=$HTTPD_LANG daemon --pidfile=${pidfile} $httpd $OPTIONS

有人可以解释为什么在守护进程函数之前HTTPD_LANG(设置为“C”)应该在那里吗?感谢。

2 个答案:

答案 0 :(得分:2)

在执行命令之前立即分配环境变量时,该变量在命令的环境中有效导出,但不会影响父环境。来自man bash:

  

任何简单命令或函数的环境都可以通过在其前面添加参数赋值来临时扩充,如上面PARAMETERS中所述。这些赋值语句仅影响该命令所见的环境。

所以在这篇文章中发生的是LANG变量,设置为你配置HTTPD_LANG的任何变量(在这种情况下为“C”),将被导出到{{1命令的环境(可能从那里进入httpd的环境)。

答案 1 :(得分:0)

任何看不到用户互动的东西只会因“正确的本地化”而变慢。根据设置LANG =“C”可以提高5倍的速度 Barry Kauler's tests.

通过将LANG变量保存为临时变量,使用LANG = C运行关键程序然后恢复LANG

,可以获得相同的加速比