export 写在shell脚本内不起作用

发布于: 2020年02月29日

今天发现这个现象,不知道算不算冷门: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命令

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理

浙ICP备18056264号-1