我正在尝试在运行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。
答案 0 :(得分:1)
默认情况下,启用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 ...
。