2013-09-24 195 views
3

我使用/etc/init.d/httpd作爲init.d腳本的模板。我明白是怎麼回事的文件中,除了以下行的一切:Bash腳本 - 編寫一個init.d腳本

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

有人可以解釋爲什麼HTTPD_LANG(被設置爲「C」)應該在那裏守護功能之前?謝謝。

+1

您是在詢問關於該行的語法,或者您在問爲什麼'daemon'函數需要在其環境中將'LANG'設置爲'C'的情況下運行? –

+0

我在詢問該行的語法 – user2759991

回答

2

當您在執行命令前立即分配環境變量時,該變量會在命令環境中有效導出,但不會影響父環境。從男子bash:

任何簡單的命令或功能的環境可以臨時增加它的前綴與參數分配,如上面在參數中所述。這些賦值語句僅影響該命令看到的環境。

所以發生了什麼事在這個初始化腳本就是LANG變量設置爲任何你已經配置HTTPD_LANG是(在這種情況下,「C」),正從那裏出口到daemon命令的環境(可能到httpd的環境中)。

0

任何不會看到用戶交互的事情只會因「恰當的本地化」而變慢。設置LANG =「C」可以根據 到5倍的速度提升放棄Barry Kauler's tests.

您可以得到由LANG變量保存到一個臨時變量,運行在LANG = C的關鍵程序,然後恢復LANG相同的加速