为什么 sudo bash 找不到 JAVA_HOME

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

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 输出的环境变量又是一致的

阅读 3.1k
3 个回答

用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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏