我需要在我所有的想法运行配置中使用环境变量。目前我使用run->edit configurations->and,然后在选定的配置中输入env变量。然而,当我需要运行孤立的测试场景时,这是非常乏味的,因为每个场景都创建了一个新的运行配置,并且我需要再次输入变量。
我尝试使用export SOME_VAR="some value"在各种会话配置文件中设置linux系统中的env变量:/etc/profile、/etc/bash.bashrc、~/.bashrc、~/.profile,但是intellij在运行过程中似乎忽略了这些vars,即使我从intellij内置终端启动echo ${SOME_VAR}时也会显示正确的输出。
我还尝试使用intellij .env文件插件,然后在项目根目录中的.env文件中设置SOME_VAR=some value。也没起作用。
发布于 2018-06-13 11:57:35
我找到了一个在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变量。此外,它还假设您在调用 IDEA之前已经创建了MY_VAR env变量,方法如下:
$ export MY_VAR="This is my adorable var :)"
$ idea请注意,我们在创建环境变量的同一个终端(或会话或窗口)中调用IntelliJ IDEA。如果您创建变量并从图标调用该想法,则解决方案将无法工作,因为该想法将创建自己的会话。
因此,如果在没有正确配置的情况下运行它,您将在控制台中得到如下内容:

请注意,您只有几个变量,并且MY_VAR为null。
下面是用于加载环境变量的配置:



就这样!
如果你现在运行你的程序,你会在你的控制台上看到这样的东西:

您可以看到所有的环境变量,当然,您的"MY_VAR“变量,有正确的值!
超越基础
通常,出于安全考虑,我们不希望所有的环境变量都是可见的。我们要做的是,只在IntelliJ (或我们的程序)运行时使这些变量可见。
因此,无论是在调用Intellij之前还是在关闭Intellij之前,都不应该在环境中看到敏感变量。
此外,您希望将这些变量保存在文件中(通常具有.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脚本,测试其他程序(戴伦夫、[医]自动等),等等。
享受吧!
..。
发布于 2019-11-18 16:47:02
在我看来,真正的问题是马特说了些什么。如果您想从快捷方式启动IntelliJ,那么您必须编辑它:打开.desktop文件,并将/bin/bash -c -i添加到启动命令的开头。该文件应该如下所示:
[Desktop Entry]
Exec=/bin/bash -i -c "/path/to/idea/bin/idea.sh" %f
Name=IntelliJ IDEA Ultimate
Type=Application
Version=1.0发布于 2018-07-20 01:17:08
如果使用了Maven,那么可以在文件->Settings->Build、Execution、Deployment->Build > Maven ->Runner下配置特定于Maven的环境变量,然后在任何Maven配置中重用这些变量。
设置环境变量的相同机制也可能适用于不同的运行程序。
https://stackoverflow.com/questions/45696203
复制相似问题