date +%a
系统语言中总是输出星期几吗?
无论是在 bash、sh 还是 cronjob 中
答案1
是的,但这不是一般意义上的“系统语言”,而是环境变量的具体值LANG
。LC_TIME
现在,无论这些变量是否设置可能确实取决于脚本如何启动。
例如,在某些 Linux 发行版中,区域环境是通过 pam_env 设置的,并且会出现在任何地方——本地、SSH、cron 等。但在其他一些发行版中,环境是通过 /etc/profile 设置的,仅有的适用于交互式 sh/bash 登录,但不适用于批处理登录。
最可靠的选择是直接在脚本中指定所需的语言环境。
例如,如果您运行env LC_TIME=en_US.UTF-8 date +%a
,则无论全局系统语言是什么,您都会获得英文输出。如果您运行,env LC_TIME=de_DE.UTF-8 date +%a
则输出将为德文,依此类推。
(所有与语言环境相关的函数首先查看LC_something
,例如 LC_TIME 或 LC_MESSAGES,如果未设置,则它们查看常规LANG
。)
locale-gen
请注意,必须先使用或类似工具使区域设置在整个系统范围内可用。使用locale -a
来检查当前可用的区域设置。