/ etc / profile中的环境变量不适用于Ubuntu 12.04LTS上的HBase

时间:2014-03-19 08:17:02

标签: linux shell ubuntu ssh hbase

我正在尝试在运行Ubuntu 12.04LTS的桌面上以伪分布式模式部署HBase。

安装后,当我尝试启动hbase-master时:

sudo service hbase-master start

它说找不到JAVA_HOME

但我确实在JAVA_HOME中配置了/etc/profile

我在谷歌搜索,发现有人说sudo service xxx start正在使用login shell/etc/profile中的变量不适用于登录shell吗?

我还试图通过ssh从另一台计算机登录来证明/etc/profile不起作用:

ssh myuser@mypc 'echo $JAVA_HOME > /tmp/tmp.log'

上面发出ssh命令后没有显示任何内容。

我还尝试在JAVA_HOME~/.bashrc中配置/root/.bashrc。它既没有工作也没有。

但是在hbase启动脚本中设置JAVA_HOME后,可以成功启动hbase实例。这意味着我的桌面上正确安装了hbase。所以问题必须在环境配置中。

有人能告诉我环境配置有什么问题吗? THX。

1 个答案:

答案 0 :(得分:1)

根据sudoers(5)

  

默认情况下,启用env_reset选项。这会导致命令在新的最小环境中执行。在AIX(以及没有PAM的Linux系统)上,使用/ etc / environment文件的内容初始化环境。

     

作为一种特殊情况,如果指定了sudo的-i选项(初始登录),sudoers将初始化环境,而不管env_reset的值如何。 DISPLAY,PATH和TERM变量保持不变; HOME,MAIL,SHELL,USER和LOGNAME基于目标用户进行设置。在AIX(以及没有PAM的Linux系统)上,还包括/ etc / environment的内容。

这意味着您应将JAVA_HOME设置放在/etc/environment中,或将sudo设为sudo -i ...