当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 8 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : export一个变量究竟发生了什么事情?
帖子发表于 : 2005-12-07 10:29 

注册: 2005-11-16 9:40
帖子: 36
送出感谢: 0 次
接收感谢: 0 次
大家好,我查了一下文档,说export是为了把一个变量变成一个global的变量,能够在不同的shell里面共享。我在配置环境的时候发现了一个有意思的事情:
我在/env/environment里面定义了两个变量A,B
A=/opt/a_dir
B=${A}/file1:${A}/file2
我发现我必须对A进行export,如果没有export,那么用echo ${B}返回的值是${A}/file1:${A}/file2,当然这个值是错的,程序找不到这个变量。如果export A,那么echo ${B}返回的值是/opt/a_dir/file1:/opt/a_dir/file1,这时就对了。
所以我很好奇到底export的时候发生什么事情,因为我重启系统以后export的效果还存在,即B是正确的,所以一定是把export的值写在哪里了,大侠们清指教。


页首
 用户资料  
 
2 楼 
 文章标题 :
帖子发表于 : 2005-12-07 11:26 
头像

注册: 2005-10-25 11:15
帖子: 1016
送出感谢: 0 次
接收感谢: 1
/env/environment ?
你是指/etc/environment吗?这个地方应该只是用来配置LANG,LC_ALL,LC_CTYPE的地方,其它变量在这里定义应该无效。


_________________
hreiser@oakland:~$ killall -9 wife
police@oakland:~$ sudo find / -user hreiser
court@oakland:~$ sudo mv /home/hreiser /jail/
court@oakland:~$ sudo usermod -d /jail/hreiser -s "/usr/sbin/chroot /jail/" hreiser


页首
 用户资料  
 
3 楼 
 文章标题 :
帖子发表于 : 2005-12-08 9:38 

注册: 2005-11-16 9:40
帖子: 36
送出感谢: 0 次
接收感谢: 0 次
可是我定义的JAVA_HOME就有效了,jdk我是bin文件手动安装的。
不过export命令到底做了什么事情呢?
Kind Regards:)
Robin


页首
 用户资料  
 
4 楼 
 文章标题 :
帖子发表于 : 2005-12-08 10:28 
头像

注册: 2005-08-14 21:55
帖子: 58428
地址: 长沙
送出感谢: 4
接收感谢: 272
我想是。一个配置被系统读到时,不会自动多次进行引用变量的多次刷新识别,这个和c的反编译思路是一样的。

配置文件一次读入时,当时第一个变量没有export到环境,那么读入第二个时,扫描环境变量,发现没有,当然不会自动认到。

要不你不可能让系统不断的重新配置环境变量吧。那样岂不是要一个daemon不断的监视环境变量的修改了。好智能哦。


_________________
● 鸣学


页首
 用户资料  
 
5 楼 
 文章标题 :
帖子发表于 : 2005-12-08 13:23 
头像

注册: 2005-10-25 11:15
帖子: 1016
送出感谢: 0 次
接收感谢: 1
楼主,我试了一下,没有能重复出你说的现象,你能描述得详细一点吗?


_________________
hreiser@oakland:~$ killall -9 wife
police@oakland:~$ sudo find / -user hreiser
court@oakland:~$ sudo mv /home/hreiser /jail/
court@oakland:~$ sudo usermod -d /jail/hreiser -s "/usr/sbin/chroot /jail/" hreiser


页首
 用户资料  
 
6 楼 
 文章标题 :
帖子发表于 : 2005-12-08 21:45 

注册: 2005-11-25 11:57
帖子: 32
送出感谢: 0 次
接收感谢: 0 次
在一个shell中,被export的变量可以以环境变量的形式传递到child process中。


页首
 用户资料  
 
7 楼 
 文章标题 : Re: export一个变量究竟发生了什么事情?
帖子发表于 : 2005-12-09 8:47 

注册: 2005-07-27 18:39
帖子: 117
送出感谢: 0 次
接收感谢: 0 次
zouzhile 写道:
大家好,我查了一下文档,说export是为了把一个变量变成一个global的变量,能够在不同的shell里面共享。我在配置环境的时候发现了一个有意思的事情:
我在/env/environment里面定义了两个变量A,B
A=/opt/a_dir
B=${A}/file1:${A}/file2
我发现我必须对A进行export,如果没有export,那么用echo ${B}返回的值是${A}/file1:${A}/file2,当然这个值是错的,程序找不到这个变量。如果export A,那么echo ${B}返回的值是/opt/a_dir/file1:/opt/a_dir/file1,这时就对了。
所以我很好奇到底export的时候发生什么事情,因为我重启系统以后export的效果还存在,即B是正确的,所以一定是把export的值写在哪里了,大侠们清指教。


是不是写到交换内存里了...


页首
 用户资料  
 
8 楼 
 文章标题 :
帖子发表于 : 2005-12-09 12:30 

注册: 2005-11-16 9:40
帖子: 36
送出感谢: 0 次
接收感谢: 0 次
有意思的事情是,我重启了一下机子,然后java命令都可以正常用了,类也能执行了。而且以前export的变量的值在env命令里面也可以看到。
看来有必要好好查查文档了。


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 8 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 1 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译