当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 6 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : [问题]sudo和环境变量
帖子发表于 : 2008-09-10 15:27 

注册: 2005-12-09 16:22
帖子: 30
送出感谢: 0 次
接收感谢: 0 次
本人是做java的, java里面的东西很麻烦, 动不动就要设置环境变量, 所以想请教大家一下关于环境变量的设置问题:

我是linux菜鸟, 问题比较stupid, 大家见笑了:)

1.这两种方式是不是等效的?
JAVA_HOME=/usr/lib/jvm/java-6-sun
export $JAVA_HOME=/usr/lib/jvm/java-6-sun


知道有两个地方可以设置环境变量(如果不对请大家指正:))
1. etc/environemnt //

2. ~.bashrc //


2. 关于环境变量的scope问题:
如果我想把设置的环境变量给所有用户使用(就是windows下面的系统变量), 应该在哪设呢?

3. sudo的问题
我把环境变量设在~.bashrc里, 执行一段shell script, 例如说run.sh
我直接 ./run.sh, 没报错, 一切正常
我 sudo ./run.sh, 会说JAVA_HOME变量没设置, 请问这个环境变量和sudo有关系吗?


_________________
java程序员 linux菜鸟 C++初学者
http://ke-cai.net


页首
 用户资料  
 
2 楼 
 文章标题 :
帖子发表于 : 2008-09-10 15:37 
头像

注册: 2007-08-05 17:40
帖子: 4968
送出感谢: 0 次
接收感谢: 4
1.这两种方式是不是等效的?
JAVA_HOME=/usr/lib/jvm/java-6-sun
export $JAVA_HOME=/usr/lib/jvm/java-6-sun

不等效。具体可以man export

知道有两个地方可以设置环境变量(如果不对请大家指正Smile)
1. etc/environemnt //(貌似不设置bash环境变量)

2. ~.bashrc //

还有:
3、/etc/bashrc(如果有)
4、~/.bash_profile(比~/.bashrc先处理,但一般是由他先调用.bashrc然后执行下面的语句)
5、/etc/profile



2. 关于环境变量的scope问题:
如果我想把设置的环境变量给所有用户使用(就是windows下面的系统变量), 应该在哪设呢?

/etc/bashrc
/etc/profile

3. sudo的问题
我把环境变量设在~.bashrc里, 执行一段shell script, 例如说run.sh
我直接 ./run.sh, 没报错, 一切正常
我 sudo ./run.sh, 会说JAVA_HOME变量没设置, 请问这个环境变量和sudo有关系吗?

不知道,貌似使用当前用户环境变量。


页首
 用户资料  
 
3 楼 
 文章标题 :
帖子发表于 : 2008-09-10 23:15 
头像

注册: 2008-05-27 17:30
帖子: 44
送出感谢: 0 次
接收感谢: 0 次
你在脚本里export $JAVA_HOME,这样变更用户也能得到你想要的环境变量


页首
 用户资料  
 
4 楼 
 文章标题 :
帖子发表于 : 2008-09-11 11:15 
头像

注册: 2007-09-29 3:09
帖子: 5773
送出感谢: 0 次
接收感谢: 3
代码:
sudo echo  "export $JAVA_HOME=/usr/lib/jvm/java-6-sun" >> /etc/profile.d/java.sh
sudo chmod a+x /etc/profile.d/java.sh


变开机自动加入的变量,省事...


_________________
HUNT Unfortunately No Talent...


页首
 用户资料  
 
5 楼 
 文章标题 :
帖子发表于 : 2008-09-11 14:08 

注册: 2008-05-24 8:30
帖子: 1453
送出感谢: 2
接收感谢: 30
应该是
代码:
export JAVA_HOME

不要加那个 $


页首
 用户资料  
 
6 楼 
 文章标题 : Re: [问题]sudo和环境变量
帖子发表于 : 2009-11-19 10:39 

注册: 2007-12-15 2:04
帖子: 52
送出感谢: 0 次
接收感谢: 0 次
引用:
3. sudo的问题
我把环境变量设在~.bashrc里, 执行一段shell script, 例如说run.sh
我直接 ./run.sh, 没报错, 一切正常
我 sudo ./run.sh, 会说JAVA_HOME变量没设置, 请问这个环境变量和sudo有关系吗?


这个问题可以用
sudo -H解决
查看一下man sudo
代码:
       -H          The -H (HOME) option sets the HOME environment variable to
                   the homedir of the target user (root by default) as
                   specified in passwd(5).  By default, sudo does not modify
                   HOME (see set_home and always_set_home in sudoers(5)).


加上这个之后可以把HOME环境变量加到默认的root上


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

当前时区为 UTC + 8 小时


在线用户

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


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

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

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