Environment-Variables
為所有啟動腳本和 inittab 設置環境變數 (TZ)
我正在研究嵌入式 Linux 系統並尋找一種方法來為所有程序設置時區。
問題是:是否有可能
TZ
在啟動時設置環境變數(初始化腳本),以便TZ
在啟動時設置所有其他初始化腳本?該系統基於 BusyBox 工具。
/etc/profile.d/
我在文件夾中嘗試了一個腳本。export TZ="GMT-1"
但是初始化腳本沒有設置變數。
我看到的唯一方法是所有啟動腳本自己設置這個變數。這個問題還有其他解決方案嗎?
如果您的系統使用 BusyBox init,但它沒有
/etc/inittab
,那麼它會/etc/init.d/rcS
在啟動時執行。如果這是一個 shell 腳本,只需在其中添加所需的環境定義。如果這不是 shell 腳本,您可以將建構更改為 rename/etc/init.d/rcS.bin
,並創建一個以 ./etc/init.d/rcS
結尾的 shell 腳本exec /etc/init.d/rcS.bin
。當然,如果您更改了/etc/init.d/rcS
建構配置中的路徑,請適應它。在那裡定義的環境變數將適用於所有守護程序,但不適用於在控制台上啟動的 shell。如果有
/etc/inittab
,請檢查其中包含的內容。該文件位於範例文件中。您可以替換由 執行somecommand
的條目/usr/bin/env TZ=GMT-1 somecommand
。這是一種快速而骯髒的方式,但在大多數情況下,您希望允許最終使用者配置時區,因此應將其儲存在單獨的文件中。在這種情況下,通過一個外殼包裝器(或
rcS
腳本)並使用一些程式碼,如export TZ="$(cat /etc/TZ.txt)"
請注意,根據您的 libc,可能有也可能沒有更好的設置時區的方法,例如
/etc/TZ
為 uClibc 編寫時區規則。