为什么 sudo bash 找不到 JAVA_HOME

为什么 sudo bash 找不到 JAVA_HOME

为什么 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

vagrant@ubuntu-focal:~/opt/hbase-2.4.8$ cat /etc/profile | grep java

export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64


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


回答:

用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配置文件

为什么 sudo bash 找不到 JAVA_HOME


回答:

介绍一个简单的方法: 普通用户安装的普通命令,使用 sudo 运行出现 command not found

sudo env "PATH=$PATH" bash bin/start-hbase.sh 就行

以上是 为什么 sudo bash 找不到 JAVA_HOME 的全部内容, 来源链接: utcz.com/qa/257085.html

回到顶部