红茶的个人站点

  • 首页
  • 专栏
  • 开发工具
  • 其它
  • 隐私政策
Awalon
Talk is cheap,show me the code.
  1. 首页
  2. 开发工具
  3. 正文

DEBUG:sudo 命令提示找不到 JAVA_HOME

2025年8月10日 10点热度 0人点赞 0条评论

现象

在 Linux 下通过 sudo 命令运行某些程序时,比如:

sudo -u zookeeper ./zkServer.sh start

报错:

Error: JAVA_HOME is not set and java could not be found in PATH.

在当前用户下执行:

echo $JAVA_HOME
/usr/lib/jvm/jdk22

显然是有的。

而且我们的环境变量是通过/etc/profile或/etc/profile.d/java.sh配置的,全局生效。按理说对于 sudo 命令模拟的用户应该也是存在的。

分析

产生这个问题的原因是 sudo 命令与 su 命令不同,用这个命令模拟用户并不会加载用户配置文件,且这个命令仅会继承有限的当前用户环境变量,而这其中并不包含 JAVA_HOME 和 PATH。

解决

修改 sudo 命令配置文件:

sudo visudo

在其中添加:

Defaults env_keep += "JAVA_HOME PATH"

这样就可以让 sudo 命令继承当前用户的环境变量 JAVA_HOME 和 PATH。

测试:

sudo -u zookeeper bash -c 'echo $JAVA_HOME'
/usr/lib/jvm/jdk22
本作品采用 知识共享署名 4.0 国际许可协议 进行许可
标签: debug Linux sudo
最后更新:2025年8月10日

魔芋红茶

加一点PHP,加一点Go,加一点Python......

点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复

COPYRIGHT © 2021 icexmoon.cn. ALL RIGHTS RESERVED.
本网站由提供CDN加速/云存储服务

Theme Kratos Made By Seaton Jiang

宁ICP备2021001508号

宁公网安备64040202000141号