《Linux From Scratch》第三部分:构建LFS系统 第七章:基本系统配置- 7.7. 系统区域设置

简介:

  本地语言的支持依赖于 /etc/locale.conf/etc/locale.conf 包含不少于此相关的环境变量。更改此文件后,可能会出现以下的变化:

  • 大量的程序界面语言的本地化

  • 修正字符在字母、数字和其它类的分类。对于非英语区域设置来说,只有这样,bash 才能正常显示非 ASCII 字符

  • 国家顺序可以按照字母顺序正常排序(译者注:这里所谓的正常排序,应该是首先将国家名称转换成本地语言的国家名称,比如中国的开头字母是 Z,那么显示就很靠后了。但是假如显示为英文,就是 C 开头,那么将会靠前显示。)

  • 默认纸张尺寸

  • 货币、时间和日期值的格式

/etc/locale.conf<ll> 使用语言代码代替(比如中文是 zh,英文是 en),<CC> 使用国家代码代替(比如中国是 CN,中国香港是 HK,中国台湾是 TW,美国是 US),<charmap> 使用选定字符集指定的标准字符映射表替换。诸如 “@euro” 这样的可选修饰符也可使用。

运行以下命令可以获得当前 Glibc 支持的本地字符集。

locale -a

字符映射表可能存在很多的别名,比如 “ISO-8859-1” 可以写作 “iso8859-1” 或 “iso88591”。但是有一些程序不支持这些乱七八糟的写法(比如 UTF-8 只能写作 UTF-8,utf8 它就不认识了)。所以,为了安全起见,在设置的时候还是尽量的使用特定区域设置的规范名称。可以通过以下命令,查询在特定区域下的 字符映射表标准名称,<locale name> 为运行 locale -a 输 出的首选区域设置(这里以 zh_CN.utf8 为例)。

LC_ALL=<locale name> locale charmap	

对于 “zh_CN.utf8” 以上命令将会如下输出:

UTF-8

根据以上输出,我们再次修改 /etc/locale.conf, 将字符映射表设置为标准形式(zh_CN.utf8 变为 zh_CN.UTF-8)。同理,也可一并查询以下设置的标准命令,然后将其添加到 bash 的启动文件中(译者注:对于 bash 来说,启动文件为 .bashrc)。

LC_ALL=<locale name> locale language
LC_ALL=<locale name> locale charmap
LC_ALL=<locale name> locale int_curr_symbol
LC_ALL=<locale name> locale int_prefix

以上的命令将会打印当前区域设置的语言、字符编码、本地货币单位以及电话国际编码。如果出现类似下文的错误输出,可能是你没有严格按照第六章指导的方法操作或者是你当前所用的 Glibc 不支持。

locale: Cannot set LC_* to default locale: No such file or directory

如果这种情况真的发生,你应该使用 localedef 命令安装对应的系统区域,或者是考虑更改为其它的区域。假如没有出现错误提示,我们就可以继续进行下一步操作了!

有一些 LFS 之外的包可能出现对你设置的区域支持很差劲的情况。比如 X 的库(X Windows System 的一部份),就可能在内部文件中输出以下消息:

Warning: locale not supported by Xlib, locale set to C

在若干情况下,Xlib 希望以带规范破折号的大写形式列出字符映射表。比如 "ISO-8859-1" 而不应该写作 "iso88591"。不过,也可以通过去除区域规范中的字符映射部分找到合适的规范。这可以通过运行 locale charmap 命令来检查。例如,需要更改 "de_DE.ISO-8859-15@euro" 为 "de_DE@euro" 以便 Xlib 能识别区域。

即便如此,也可能遇到某些程序因为区域设置和它们预置的不同而导致功能异常(可能不会显示任何的错误消息)。如果出现这样的情况,可以通过查看其它的发行版是如何进行设置区域,从而得到启发。

一旦确定了到底该使用哪个区域设置,就可以创建 /etc/locale.conf 文件了:

cat > /etc/locale.conf << "EOF"
LANG=<ll>_<CC>.<charmap><@modifiers>
EOF

也可以通过 systemd 提供的实用程序 localectl 修改 /etc/locale.conf

localectl set-locale LANG="<ll>_<CC>.<charmap><@modifiers>"

此处,也可以指定其它和语言相关的环境变量,例如 LANGLC_CTYPELC_NUMERIC 或任何其它 locale 输出的环境变量,只需要用一个空格分开它们就可以了。以下示例中,LANG 设置为 en_US.UTF-8,但 LC_CTYPE 设置为 en_US:

localectl set-locale LANG="en_US.UTF-8" LC_CTYPE="en_US"
[Note]

注意

localectl 仅可用于 systemd 环境(译者注:你要是用 SysVinit 什么的就别用这个命令瞎捣乱了)。

“C” (默认)和 “en_US” (推荐美国英语用户使用)这两种区域设置有所不同。“C” 使用 US-ASCII 7 位字符集,并把设置了最高位的字节作为无效字符。这就是为什么类似 ls 的命令本地化时会用疑问号代替。 同样,如果你想要使用 Mutt 或 Pine 发送包含有类似字符的邮件,将会得到如下消息:非 RFC 兼容字符(发送邮件中的字符集为 “unknown 8-bit”)。 所以,如果你一定以及肯定一定不会用到 8 位的字符,那你可以仅使用“C”。

不少程序还不支持 UTF-8 区域设置。我们正在完善文档并修复类似问题,可以查看 http://www.linuxfromscratch.org/blfs/view/systemd/introduction/locale-issues.html

相关文章
|
12月前
|
Ubuntu Linux Anolis
Linux系统禁用swap
本文介绍了在新版本Linux系统(如Ubuntu 20.04+、CentOS Stream、openEuler等)中禁用swap的两种方法。传统通过注释/etc/fstab中swap行的方式已失效,现需使用systemd管理swap.target服务或在/etc/fstab中添加noauto参数实现禁用。方法1通过屏蔽swap.target适用于新版系统,方法2通过修改fstab挂载选项更通用,兼容所有系统。
983 3
Linux系统禁用swap
|
12月前
|
Linux
Linux系统修改网卡名为eth0、eth1
在Linux系统中,可通过修改GRUB配置和创建Udev规则或使用systemd链接文件,将网卡名改为`eth0`、`eth1`等传统命名方式,适用于多种发行版并支持多网卡配置。
1572 3
|
11月前
|
存储 Linux 开发工具
Linux环境下使用Buildroot配置软件包
使用Buildroot可以大大简化嵌入式Linux系统的开发和维护工作,但它需要对Linux系统和交叉编译有深入的理解。通过上述步骤,可以有效地配置和定制软件包,为特定的嵌入式应用构建高效、稳定的系统。
1101 11
|
Ubuntu Linux 网络安全
Linux系统初始化脚本
一款支持Rocky、CentOS、Ubuntu、Debian、openEuler等主流Linux发行版的系统初始化Shell脚本,涵盖网络配置、主机名设置、镜像源更换、安全加固等多项功能,适配单/双网卡环境,支持UEFI引导,提供多版本下载与持续更新。
1054 3
Linux系统初始化脚本
|
安全 Linux Shell
Linux系统提权方式全面总结:从基础到高级攻防技术
本文全面总结Linux系统提权技术,涵盖权限体系、配置错误、漏洞利用、密码攻击等方法,帮助安全研究人员掌握攻防技术,提升系统防护能力。
1201 1
|
监控 安全 Linux
Linux系统提权之计划任务(Cron Jobs)提权
在Linux系统中,计划任务(Cron Jobs)常用于定时执行脚本或命令。若配置不当,攻击者可利用其提权至root权限。常见漏洞包括可写的Cron脚本、目录、通配符注入及PATH变量劫持。攻击者通过修改脚本、创建恶意任务或注入命令实现提权。系统管理员应遵循最小权限原则、使用绝对路径、避免通配符、设置安全PATH并定期审计,以防范此类攻击。
1483 1
|
12月前
|
Linux 应用服务中间件 Shell
二、Linux文本处理与文件操作核心命令
熟悉了Linux的基本“行走”后,就该拿起真正的“工具”干活了。用grep这个“放大镜”在文件里搜索内容,用find这个“探测器”在系统中寻找文件,再用tar把东西打包带走。最关键的是要学会使用管道符|,它像一条流水线,能把这些命令串联起来,让简单工具组合出强大的功能,比如 ps -ef | grep 'nginx' 就能快速找出nginx进程。
1079 1
二、Linux文本处理与文件操作核心命令
|
12月前
|
Linux
linux命令—stat
`stat` 是 Linux 系统中用于查看文件或文件系统详细状态信息的命令。相比 `ls -l`,它提供更全面的信息,包括文件大小、权限、所有者、时间戳(最后访问、修改、状态变更时间)、inode 号、设备信息等。其常用选项包括 `-f` 查看文件系统状态、`-t` 以简洁格式输出、`-L` 跟踪符号链接,以及 `-c` 或 `--format` 自定义输出格式。通过这些选项,用户可以灵活获取所需信息,适用于系统调试、权限检查、磁盘管理等场景。
775 137
|
12月前
|
安全 Ubuntu Unix
一、初识 Linux 与基本命令
玩转Linux命令行,就像探索一座新城市。首先要熟悉它的“地图”,也就是/根目录下/etc(放配置)、/home(住家)这些核心区域。然后掌握几个“生存口令”:用ls看周围,cd去别处,mkdir建新房,cp/mv搬东西,再用cat或tail看文件内容。最后,别忘了随时按Tab键,它能帮你自动补全命令和路径,是提高效率的第一神器。
1708 58
|
11月前
|
存储 安全 Linux
Linux卡在emergency mode怎么办?xfs_repair 命令轻松解决
Linux虚拟机遇紧急模式?别慌!多因磁盘挂载失败。本文教你通过日志定位问题,用`xfs_repair`等工具修复文件系统,三步快速恢复。掌握查日志、修磁盘、验重启,轻松应对紧急模式,保障系统稳定运行。
1636 2