ubuntu下环境变量是如何起作用的

软件和网站开发以及相关技术探讨
回复
arrowf
帖子: 13
注册时间: 2009-01-11 0:45

ubuntu下环境变量是如何起作用的

#1

帖子 arrowf » 2010-03-15 17:11

为了验证环境变量是如何发生作用的,我做了如下的实验:
我在ubuntu9.10上安装了英文和中文,并讲当前语言设置为中文。然后我讲以下语句添加到/etc/bash.bashrc结尾:
LANGUAGE=“en_US:en"
LANG="en_US.UTF-8"

运行souce /etc/bash.bashrc

再运行env,查看当前的环境变量LANG以及LANG,都已经更改为我最新设置的值。
--->刚刚又试了一下,发现这些环境变量值的更新,仅限于当前终端,如果新开终端,查看环境变量还是原来的值。怪了,难道我昨天看错了?
问题来了:之前已经打开了的应用程序是中文的,这个倒是没有问题。应用程序还不能随时切换语言。但是,我全新打开任何其他的应用程序,仍然显示中文,并没有根据最新的环境变量选择英文的显示。那么,环境变量LANG 和 LANGUAGE有什么意义呢?应用程序到底是根据什么来判断中文还是英文呢?
上次由 arrowf 在 2010-03-16 17:22,总共编辑 1 次。
头像
cuckoo1978
帖子: 513
注册时间: 2009-05-09 14:42
来自: 济南
联系:

Re: ubuntu下环境变量是如何起作用的

#2

帖子 cuckoo1978 » 2010-03-15 22:59

utf-8 它的作用,它可以表示全球上的大多数语言,它是一种变长的编码方式。它可以使用1~4个字节表示一个符号,根据不同的符号而变化字节长度,不同的语言有不同的字符表示,即使你把语言设置成了英文,但是 utf-8 的编码不会变,依然还是中文,比如你用俄语写了一篇文章(前提是你有俄语的输入法),虽然你的默认语言是中文,但是显示的依然是俄语。再说的土一点就是可以这样理解,utf-8用1-4个字节把地球上大部分语言编号,对号入座。
建议看看这个 http://www.ruanyifeng.com/blog/2007/10/ ... utf-8.html
java是用 unicode 来写的,就是utf-16,可以表示更多的语言。。。。。。 :em06 解释的不太好,多包涵。。。。。。我天生不是当老师的料。。。
废土狂猪 :看啥 ,没见过网管吗,再看 吃了你!
头像
BigSnake.NET
帖子: 12522
注册时间: 2006-07-02 11:16
来自: 廣州
联系:

Re: ubuntu下环境变量是如何起作用的

#3

帖子 BigSnake.NET » 2010-03-15 23:36

你新设置的变量只对新的shell起作用
已有的是不会变的
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
arrowf
帖子: 13
注册时间: 2009-01-11 0:45

Re: ubuntu下环境变量是如何起作用的

#4

帖子 arrowf » 2010-03-16 10:42

但是我用echo $LANG 和 echo $LANGUGE 查看出来的值确实已经更新了,为什么这种环境变量的变化没有体现到应用程序上呢?
全新打开的应用程序仍然获得的是gnome session启动时加载的LANG/LANGUAGE值,这个值到底是保存在什么地方的呢?
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

Re: ubuntu下环境变量是如何起作用的

#5

帖子 eexpress » 2010-03-16 10:43

X的软件,可不一定使用你bash的export设置。应该去gconf里面找。X的软件,不单纯的。
● 鸣学
arrowf
帖子: 13
注册时间: 2009-01-11 0:45

Re: ubuntu下环境变量是如何起作用的

#6

帖子 arrowf » 2010-03-16 11:06

eexpress 写了:X的软件,可不一定使用你bash的export设置。应该去gconf里面找。X的软件,不单纯的。
我也在怀疑其实这些应用程序根本就没有使用LANG/LANGUAGE,但是我对这个不太熟悉,我想知道这些软件是怎么取得当前的语言环境的。如果用gconf,总得有个接口吧,这些东西应该去哪儿找呢?
头像
BigSnake.NET
帖子: 12522
注册时间: 2006-07-02 11:16
来自: 廣州
联系:

Re: ubuntu下环境变量是如何起作用的

#7

帖子 BigSnake.NET » 2010-03-16 11:08

arrowf 写了:但是我用echo $LANG 和 echo $LANGUGE 查看出来的值确实已经更新了,为什么这种环境变量的变化没有体现到应用程序上呢?
全新打开的应用程序仍然获得的是gnome session启动时加载的LANG/LANGUAGE值,这个值到底是保存在什么地方的呢?
你加到 /etc/environment 然后重启看看, 或者在登陆界面选语言
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
arrowf
帖子: 13
注册时间: 2009-01-11 0:45

Re: ubuntu下环境变量是如何起作用的

#8

帖子 arrowf » 2010-03-16 11:26

BigSnake.NET 写了:
arrowf 写了:但是我用echo $LANG 和 echo $LANGUGE 查看出来的值确实已经更新了,为什么这种环境变量的变化没有体现到应用程序上呢?
全新打开的应用程序仍然获得的是gnome session启动时加载的LANG/LANGUAGE值,这个值到底是保存在什么地方的呢?
你加到 /etc/environment 然后重启看看, 或者在登陆界面选语言
重启以后当然就没问题了。

现在的问题就是,如果不重启,如何能够让我对特点环境变量(具体来说就是语言相关的)的改动立刻生效。
头像
sanchor
帖子: 17
注册时间: 2010-11-30 21:28

Re: ubuntu下环境变量是如何起作用的

#9

帖子 sanchor » 2010-12-12 15:08

arrowf 写了:
BigSnake.NET 写了:
arrowf 写了:但是我用echo $LANG 和 echo $LANGUGE 查看出来的值确实已经更新了,为什么这种环境变量的变化没有体现到应用程序上呢?
全新打开的应用程序仍然获得的是gnome session启动时加载的LANG/LANGUAGE值,这个值到底是保存在什么地方的呢?
你加到 /etc/environment 然后重启看看, 或者在登陆界面选语言
重启以后当然就没问题了。

现在的问题就是,如果不重启,如何能够让我对特点环境变量(具体来说就是语言相关的)的改动立刻生效。
我刚在10.10装了GE,但是不支持中文显示,看了官方帮助文档,又搜索到这里的帖子,有了答案。
在终端输入

LANG=en_US googleearth

启动GE,英文界面,成功。
但是关闭后从菜单打开,就还是中文的。
结论,在终端对LANG的修改只是临时的,类似DOS的set吧
感觉我的经历应该对你的问题有帮助,试试吧。 :em11
回复