我遇到过这样的情况:在使用 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
应该足够了。