踩坑:Linux 系统使用 sudo sh idea.sh 命令运行idea找不到java环境
报错:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.0:testCompile
在确保idea有jdk环境的情况下,在命令行输入将java -version 查看系统java环境,如果找不到,就按下面解决方法执行
原因:sudo运行时,会默认重置环境变量为安全的环境变量,也即,但前设置的变量都会失效,只有少数配置文件中指定的环境变量能保存下来。
解决:
1、sudo -E 执行命令 (亲测有效)
-E 选项在man page中的解释是:
-E
The -E (preserve environment) option indicates to the security policy that the user wishes to preserve their existing environment variables. The security policy may return an error if the -E option is specified and the user does not have permission to preserve the environment.
简单来说,就是加上-E 选项后,用户可以在sudo执行时保留当前用户已存在的环境变量,不会被sudo重置,另外,如果用户对于指定的环境变量没有权限,则会报错。
2、修改sudo配置文件
在内部测试机器中,安全性要求不高,总是需要加上-E参数来执行脚本,这个安全设定也不是很方便,可以通过visudo 命令来修改配置为保留原有的环境变量,具体修改如下:
$sudo visudo
# Defaults env_reset # 注释掉原有配置
# Defaults env_keep=”…” # 注释掉指定的变量保持
|