为什么 sudo bash 找不到 JAVA_HOME

ponponon
  • 1.6k

image.png

为什么 sudo bash bin/start-hbase.sh 找不到 JAVA_HOME,但是输入 sudo echo $JAVA_HOME 又是可以显示 JAVA_HOME

使用 bash bin/start-hbase.sh 不加 sudo 是可以启动 hbase 的。

/etc/profile 文件中配置了环境变量 JAVA_HOME

[email protected]:~/opt/hbase-2.4.8$ cat /etc/profile | grep java
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64

其实我的问题是,为什么启动一个东西的时候 sudo bashbash 的结果会不一样 ,但是 sudo echoecho 输出的环境变量又是一致的

回复
阅读 1.4k
2 个回答

用sudo的时候默认会重置环境变量,所以hbase脚本里面没获取到。

echo abc   ==>   abc
echo $JAVA_HOME   ==>  echo /opt/java/   ==>  /opt/java/
sudo echo $JAVA_HOME   ==>  sudo echo /opt/java/    ==>  echo /opt/java/  ==>  /opt/java/

1、使用sudo -E

 -E, --preserve-env
                 Indicates to the security policy that the user wishes to preserve their existing environment variables.  The security policy may return an error if the user does not have permission to preserve the environment.

2、修改sudo的配置文件,禁止重置环境变量

执行 visudo更改sudo配置文件

image.png

宣传栏