rc.local 中的程序启动时未使用标准本地化

rc.local 中的程序启动时未使用标准本地化

我遇到过这样的情况:在使用 rc.local 启动程序的过程中,日期格式与标准本地化设置不符。当我手动执行相同的程序/rc.local 文件时,我得到了正确的格式。
我能做些什么来解决这个问题?

这是我手动执行语言环境时得到的结果:

locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
LANG=de_DE.UTF-8
LANGUAGE=
LC_CTYPE="de_DE.UTF-8"
LC_NUMERIC=de_AT.UTF-8
LC_TIME=de_AT.UTF-8
LC_COLLATE="de_DE.UTF-8"
LC_MONETARY=de_AT.UTF-8
LC_MESSAGES=POSIX
LC_PAPER=de_AT.UTF-8
LC_NAME=de_AT.UTF-8
LC_ADDRESS=de_AT.UTF-8
LC_TELEPHONE=de_AT.UTF-8
LC_MEASUREMENT=de_AT.UTF-8
LC_IDENTIFICATION=de_AT.UTF-8
LC_ALL=

当它由 rc.local 执行时

LANG=
LANGUAGE=
LC_CTYPE="POSIX"
LC_NUMERIC="POSIX"
LC_TIME="POSIX"
LC_COLLATE="POSIX"
LC_MONETARY="POSIX"
LC_MESSAGES="POSIX"
LC_PAPER="POSIX"
LC_NAME="POSIX"
LC_ADDRESS="POSIX"
LC_TELEPHONE="POSIX"
LC_MEASUREMENT="POSIX"
LC_IDENTIFICATION="POSIX"
LC_ALL=

答案1

如果您希望命令使用给定语言环境的时间格式,只需LC_TIME为其设置变量即可。例如,如果您的命令rc.local是:

/path/to/foo arg1 arg2 ...

使用:

/usr/bin/env LC_TIME=de_AT.UTF-8 /path/to/foo arg1 arg2 ...

您还可以通过这种方式设置其他区域变量,但对于时间格式来说,LC_TIME应该足够了。

相关内容