为什么 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 javaexport JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
其实我的问题是,为什么启动一个东西的时候 sudo bash
和 bash
的结果会不一样 ,但是 sudo echo
和 echo
输出的环境变量又是一致的
回答:
用sudo的时候默认会重置环境变量,所以hbase脚本里面没获取到。
echo abc ==> abcecho $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 运行出现 command not found
sudo env "PATH=$PATH" bash bin/start-hbase.sh
就行
以上是 为什么 sudo bash 找不到 JAVA_HOME 的全部内容, 来源链接: utcz.com/qa/257085.html