‘date +%a’ 的输出总是以系统语言显示?

‘date +%a’ 的输出总是以系统语言显示?

date +%a系统语言中总是输出星期几吗?

无论是在 bash、sh 还是 cronjob 中

答案1

是的,但这不是一般意义上的“系统语言”,而是环境变量的具体值LANGLC_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来检查当前可用的区域设置。

答案2

它已经在手册页

%a     locale's abbreviated weekday name (e.g., Sun)

是的,这个名字就是语言环境的名称

相关内容