【发布时间】:2021-10-27 00:33:01
【问题描述】:
在 WSL2 中,使用 ubuntu 发行版,我在 /etc/profile 中定义了一个新变量(我也尝试过 ~/.bashrc 和 /etc/environment)
export JDK_17_0=/home/scaventz/sdk/jdk-17
然后source /etc/profile
然后我尝试通过在 Windows 中使用 Intellij IDEA 创建一个 Java 项目来获取此变量(该项目本身当然位于 WSL2 中):
public class Main {
public static void main(String[] args) {
String prop = "JDK_17_0";
String jdk = System.getProperty(prop);
if (jdk == null) {
jdk = System.getenv(prop);
}
System.out.println(jdk);
}
}
我得到一个空值。
这似乎是与 WSL2 相关的问题,有什么解决方法吗?
【问题讨论】:
-
什么意思:项目本身位于WSL2中?
-
抱歉没有描述清楚,表示我在WSL2中创建了一个java项目,并在Windows中用IDEA打开。
-
导出环境变量的问题在于它只在您的终端会话中持续存在,我认为
source /etc/profile也是如此。你说你把它加到了~/.bashrc?您可以从 WSL2 终端回显该变量吗? -
您是否在 WSL2 终端中启动您的应用程序?
-
@scaventz:环境变量由 child 进程传递继承。您必须安排您的 Java 程序作为设置变量的 bash 进程的子进程运行。
标签: java shell environment-variables wsl-2