我需要在我的所有想法运行配置中使用环境变量。我目前使用 运行 -> 编辑配置 -> 然后在选定的配置中输入环境变量 .然而,当我需要运行独立的测试场景时,这是非常乏味的,因为每个场景都会创建一个新的运行配置,我需要重新输入变量。
我尝试使用 export SOME_VAR="some value"
在我的 linux 系统中设置 env 变量在各种 session 配置文件中:/etc/profile
, /etc/bash.bashrc
, ~/.bashrc
, ~/.profile
但 Intellij 似乎在运行期间忽略了这些变量,即使我启动 echo ${SOME_VAR}
时也是如此。从 intellij 内置终端它显示正确的输出。
我也尝试使用 intellij .env file plugin然后设置 SOME_VAR=some value
在 .env
项目根目录下的文件。也没有用。
最佳答案
我找到了一个在 IntelliJ 上设置环境变量的解决方案,它对我来说效果很好,而且非常简单。让我演示给你看。
这是我们用来测试的程序(您可以复制和粘贴它):
package com.javasd.intelijenv;
import java.util.Map;
public class Main {
public static void main(String[] args) {
Map<String, String> env = System.getenv();
for (String envName : env.keySet()) {
System.out.format("%s=%s%n", envName, env.get(envName));
}
System.out.println("My home directory: " + System.getenv("MY_VAR"));
}
}
该程序基本上加载了所有环境变量,在控制台上显示它们,并尝试显示一个 env 变量。此外,它假定您已经创建了 MY_VAR 环境变量 在调用 IntelliJ IDEA 之前 ,通过做类似的事情:
$ export MY_VAR="This is my adorable var :)"
$ idea
请注意,我们在创建环境变量的同一终端(或 session 或窗口)中调用 IntelliJ IDEA。如果您创建变量并从图标调用 IDEA,该解决方案将不起作用,因为 IDEA 将创建自己的 session 。
因此,如果在没有正确配置的情况下运行它,您将在控制台中看到以下内容:
请注意,您只有几个变量,并且 MY_VAR 为空。
这是我用来加载环境变量的配置:
就是这样!!!
如果你现在运行你的程序,你会在你的控制台上看到这样的东西:
您可以看到所有环境变量,当然还有您的“MY_VAR”变量,以及正确的值!
超越基础
通常,出于安全原因,我们不想让所有环境变量都可见。我们想要做的是使这些变量仅在 IntelliJ(或我们的程序)运行时可见。
因此,无论是在调用 Intellij 之前还是在关闭它之后,环境中都不应该看到任何敏感变量。
此外,您希望将这些变量保存在一个文件中(通常带有 .env 扩展名),以便于操作和出于安全原因。
为了实现这一点,有一些有用的程序(你可以谷歌它们),但我最喜欢的是 env-cmd .
假设您有一个 test.env 包含以下内容的文件:
MY_TEST_VAR=I live in the test.env file.
如果您通过执行以下操作调用 IntelliJ:
$ env-cmd test.env idea
并编辑您的程序以显示“MY_TEST_VAR”,然后运行它,您将在 IntelliJ 的控制台上看到:
但是如果你退出 IntelliJ,并查找你的变量,你会看到该变量不存在(你可以使用
env
来确认):在这一点上,我希望您能够使用自己的解决方案:创建内部设置了变量的 shell 脚本,测试其他程序( direnv 、 autoenv 等),等等。
享受!
...
关于intellij-idea - IntelliJ IDEA 全局环境变量配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45696203/