0%

linux date显示中文

locale

通过字面意思加man手册其实也能猜个大概: get locale-specific information(获取特定语言区域的配置信息)

设置LC_TIME,让date显示中文

F: Linux 下只想date命令显示中文
M: 设置下LC_TIME就行了

1
2
3
4
5
root@dev:~# date
Mon Dec 21 10:20:51 CST 2020
root@dev:~# export LC_TIME="zh_CN.utf8"
root@dev:~# date
20201221日 星期一 10:20:57 CST

F: 不行啊,设置未生效

1
2
3
root@dev:~# export LC_TIME="zh_CN.utf8"
root@dev:~# date
Mon Dec 21 10:20:51 CST 2020

M: 你单独执行locale
F: 好

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
root@dev:~# locale
LANG=en_US.UTF-8
LANGUAGE=
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=en_US.UTF-8

M: 恭喜你踩到第一个坑,LC_ALL如果设置了,会覆盖其它所有LC_*; 看看/etc/default/locale 还有其它profile bashrc等文件是否有配置相关变量; LC_ALL > LC_* > LANG
F: grep 看我服务器没相关设置
M: 服务器?! 两种方式:

1 - 改服务端sshd_config,注释掉AcceptEnv,不建议

1
2
# Allow client to pass locale environment variables
AcceptEnv LANG LC_*

2 - 把你本地设置的LC_ALL配置去掉,你看看本地文件尤其是~/.bash_profile,把下面类似配置去掉

1
export LC_ALL=en_US.UTF-8

然后重新登录你服务端设置LC_TIME

F: 还有LC_*其它字段… …
M: 停!

1
man locale; man 5 locale; man 7 locale