如何在终端中获取当前或设置所需的区域格式?

如何在终端中获取当前或设置所需的区域格式?

我正在寻找单行终端命令来:

  • 检查我当前的区域格式或
  • 将区域格式设置为美国英语。

目前,要更改此设置,我必须进入“设置”->“语言支持”->“区域格式”

(发行版:Ubuntu 14.04 LTS,最好也能在 16.04 LTS 上运行)

答案1

区域格式改变以下变量:

LC_NUMERIC
LC_TIME
LC_MONETARY

您可以使用locale来检查当前设置的格式。

ron@ron:~$ locale
LANG=en_US
LANGUAGE=en_US
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC=en_US.UTF-8
LC_TIME=en_US.UTF-8
LC_COLLATE="en_US.UTF-8"
LC_MONETARY=en_US.UTF-8
LC_MESSAGES="en_US.UTF-8"
LC_PAPER=en_US.UTF-8
LC_NAME=en_US.UTF-8
LC_ADDRESS=en_US.UTF-8
LC_TELEPHONE=en_US.UTF-8
LC_MEASUREMENT=en_US.UTF-8
LC_IDENTIFICATION=en_US.UTF-8
LC_ALL=

如果你想查看系统中所有可用的语言环境,你可以使用:

ron@ron:~$ locale -a
C
C.UTF-8
en_AG
en_AG.utf8
en_AU.utf8
en_BW.utf8
en_CA.utf8

例如,要将日期格式更改为美国格式,您可以使用:

LC_TIME=en_US.UTF-8 

要永久更改它:

sudo update-locale LC_TIME=en_US.UTF-8

如果您愿意,您也可以手动编辑文件,/etc/default/locale而不是update-locale。更改将在您下次登录时应用。

參閱区域设置 - 社区帮助 Wiki了解更多详细信息。man 5 locale您是否有更多选项来查找并调整任何格式。

答案2

此命令以与语言支持相同的方式将区域格式设置为 en_US.UTF-8:

dbus-send --print-reply --system --dest=org.freedesktop.Accounts /org/freedesktop/Accounts/User$UID org.freedesktop.Accounts.User.SetFormatsLocale string:'en_US.UTF-8'

它会更新 accountsservice 和文件中的用户设置~/.pam_environment

/etc/default/locale仅当您单击应用全系统按钮。

还没有弄清楚检查当前格式的相应命令。

忍不住想知道你为什么要这么做。在 Ubuntu 桌面上手动调整这些设置通常不是一个好主意。语言支持做了正确的事情。

答案3

您可以使用以下命令检查 shell 中的 LANGUAGE 变量:

echo $LANGUAGE

我的系统运行 GB English 的输出是:

en_GB:en

相关内容