Environment-Variables

為所有啟動腳本和 inittab 設置環境變數 (TZ)

  • March 2, 2016

我正在研究嵌入式 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 編寫時區規則。

引用自:https://unix.stackexchange.com/questions/266747