Linux语言区设置对命令输出的影响
脚本对多语言支持
有些命令支持多种语言,如果脚本没有做兼容,很可以导致结果错误,例如:
readelf -h hello.o | grep Type
在本地语言区是 enUS.UTF-8 时有结果返回,但是,语言区设置为 zhCN.UTF-8 没有任何结果。
对比一下,两种语言时,readelf 的输出。
- snippet.bash
[yz@localhost c]$ echo $LANG en_US.UTF-8 [yz@localhost c]$ LANG='en_US.UTF-8' ; readelf -h hello.o ELF Header: Magic: 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00 Class: ELF64 Data: 2's complement, little endian Version: 1 (current) OS/ABI: UNIX - System V ABI Version: 0 Type: REL (Relocatable file) [yz@localhost c]$ echo $LANG zh_CN.UTF-8 [yz@localhost c]$ LANG='zh_CN.UTF-8' ; readelf -h hello.o ELF 头: Magic: 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00 类别: ELF64 数据: 2 补码,小端序 (little endian) Version: 1 (current) OS/ABI: UNIX - System V ABI 版本: 0 类型: REL (可重定位文件)
因此,如果脚本不兼容多种语言,则最好强制设置 LANG 环境变量。
配置
查看系统当前使用的语言
echo $LANG
查看系统有没有安装中文语言包
local
安装中文语言包
yum groupinstall chinese-support
临时修改语言为中文
LANG="zh_CN.UTF-8"
修改系统默认语言
vi /etc/sysconfig/i18n 填写 LANG="zh_CN.UTF-8"
参考
打赏作者以资鼓励: