这几天在阅读Red Hat Enterprise Linux 7的官方文档,发现了一些比之前有较大改善的系统管理方式,准备用一个系列的文章来分享一下自己的阅读、学习心得。在系统管理指导的开篇就提到了语言、字符编码、键盘布局的问题。下面就来分享一下这些内容,在后面的一系列文章中将无多余废话,还请见谅!
系统区域设置是指系统服务及用户接口的语言设置。键盘布局设置用于控制字符控制台布局及图形化用户接口。这些设置的修改可以通过修改/etc/locale.conf配置文件来实现,也可以使用localectl单元来实现。当然你也可以使用图形化用户界面来完成这个任务。本人习惯在字符控制台下完成Linux服务器的运维,所以本文将不会涉及图形化界面设置的操作。

一、设置系统区域

大部分系统的区域设置存放在/etc/locale.conf配置文件中
,在系统启动初期会被systemd守护进程读取。这个设置被每一个服务和用户继承,除非个别的用户或程序来重写他们。
1、通过修改/etc/locale.conf来实现系统区域设置的修改。编辑该文件:在该配置文件中写入如下2行:

LANG=zh_CN.UTF-8
LC_MESSAGES=C

zh:语言为汉语,CN:国家或地区中国大陆,UTF-8:字符编码为UTF-8。
LC_MESSAGES=C:确定区域设置并用于将诊断信息写入到标准错误输出中。
其他选项可参见下表:

Option

Description

LANG

Provides a default value for the system locale.

LC_COLLATE

Changes the behavior of functions which compare strings in the local alphabet.

LC_CTYPE

Changes the behavior of the character handling and classification functions and the multibyte character functions.

LC_NUMERIC

Describes the way numbers are usually printed, with details such as decimal point versus decimal comma.

LC_TIME

Changes the display of the current time, 24-hour versus 12-hour clock.

LC_MESSAGES

Determines the locale used for diagnostic messages written to the standard error output.

2、通过localectl命令来修改系统区域。
(1)显示当前系统区域状态。

[root@Geeklp-Administrator ~]# localectl status
   System Locale: LANG=zh_CN.UTF-8
       VC Keymap: cn
      X11 Layout: cn

(2)列出可用的系统区域设置。

[root@Geeklp-Administrator ~]# localectl list-locales
...
zh_CN
zh_CN.gb18030
zh_CN.gb2312
zh_CN.gbk
zh_CN.utf8
zh_HK
zh_HK.big5hkscs
zh_HK.utf8
zh_SG
zh_SG.gb2312
zh_SG.gbk
zh_SG.utf8
zh_TW
zh_TW.big5
zh_TW.euctw
zh_TW.utf8
...

以上只节选了汉语系系统区域设置的内容。
(3)修改系统区域设置。

[root@Geeklp-Administrator ~]# localectl set-locale LANG=zh_HK.utf8

修改完成之后并不会立刻生效,必须重启之后才会生效。

二、设置键盘映射及X11布局

(1)列举键盘映射。

[root@Geeklp-Administrator ~]# localectl list-keymaps

(2)修改键盘映射。

[root@Geeklp-Administrator ~]# localectl set-keymap us
[root@Geeklp-Administrator ~]# localectl
   System Locale: LANG=zh_CN.utf8
       VC Keymap: us
      X11 Layout: us
       X11 Model: pc105+inet
     X11 Options: terminate:ctrl_alt_bksp

在上文中,我们可以看出VC Keymap为cn,X11 Layout也为cn,修改完成之后立刻生效。
(3)修改X11布局。

[root@Geeklp-Administrator ~]# localectl set-x11-keymap cn
[root@Geeklp-Administrator ~]# localectl 
   System Locale: LANG=zh_CN.utf8
       VC Keymap: cn
      X11 Layout: cn

我们可以看到显示内容少了2行,修改及时生效。
下面列举一下localectl相关的帮助资料。

[root@Geeklp-Administrator ~]# localectl --help
localectl [OPTIONS...] COMMAND ...
Query or change system locale and keyboard settings.
  -h --help                Show this help
     --version             Show package version
     --no-pager            Do not pipe output into a pager
     --no-ask-password     Do not prompt for password
  -H --host=[USER@]HOST    Operate on remote host
  -M --machine=CONTAINER   Operate on local container
     --no-convert          Don't convert keyboard mappings
Commands:
  status                   Show current locale settings
  set-locale LOCALE...     Set system locale
  list-locales             Show known locales
  set-keymap MAP [MAP]     Set console and X11 keyboard mappings
  list-keymaps             Show known virtual console keyboard mappings
  set-x11-keymap LAYOUT [MODEL [VARIANT [OPTIONS]]]
                           Set X11 and console keyboard mappings
  list-x11-keymap-models   Show known X11 keyboard mapping models
  list-x11-keymap-layouts  Show known X11 keyboard mapping layouts
  list-x11-keymap-variants [LAYOUT]
                           Show known X11 keyboard mapping variants
  list-x11-keymap-options  Show known X11 keyboard mapping options