今天发现这个现象,不知道算不算冷门:export 写在shell脚本,然后执行脚本是不起作用的。
比如原来执行locale命令:
~$:locale
LANG=C
LANGUAGE=
LC_CTYPE=”C”
LC_NUMERIC=”C”
LC_TIME=”C”
LC_COLLATE=”C”
LC_MONETARY=”C”
LC_MESSAGES=”C”
LC_PAPER=”C”
LC_NAME=”C”
LC_ADDRESS=”C”
LC_TELEPHONE=”C”
LC_MEASUREMENT=”C”
LC_IDENTIFICATION=”C”
LC_ALL=C
想把local改成UTF-8,也不知道怎么想的,写了一个脚本,lc.sh
#!/bin/bash
export LC_ALL=zh_CN.UTF-8
locale
执行脚本,输出:
~$ ./lc.sh
LANG=
LANGUAGE=
LC_CTYPE=”zh_CN.UTF-8″
LC_NUMERIC=”zh_CN.UTF-8″
LC_TIME=”zh_CN.UTF-8″
LC_COLLATE=”zh_CN.UTF-8″
LC_MONETARY=”zh_CN.UTF-8″
LC_MESSAGES=”zh_CN.UTF-8″
LC_PAPER=”zh_CN.UTF-8″
LC_NAME=”zh_CN.UTF-8″
LC_ADDRESS=”zh_CN.UTF-8″
LC_TELEPHONE=”zh_CN.UTF-8″
LC_MEASUREMENT=”zh_CN.UTF-8″
LC_IDENTIFICATION=”zh_CN.UTF-8″
LC_ALL=zh_CN.UTF-8
嗯,多么完美。
但是事实上,你的shell环境的locale并没有变成UTF-8,是的没变。
一定要写在shell脚本,且有效,两个选择:
1.写在 .bashrc 文件
2. 可以写在自己的文件内(比如lc.sh)但是要执行:source lc.sh才会生效
OK。你看出来了,这两个选择其实是一回事,.bashrc文件会在你登录的shell的时候执行 source .bashrc命令