mirror of
https://gitflic.ru/project/openide/openide.git
synced 2025-12-14 18:05:27 +07:00
[terminal] IJPL-200767 ensure System.getenv() is used when running locally
(cherry picked from commit febc4398231efadf4f1a9db1c6d9505304b4f760) IJ-CR-172066 GitOrigin-RevId: b195691effa8e8de38bcdde5e7a869a4cf0668de
This commit is contained in:
committed by
intellij-monorepo-bot
parent
5aaa8992d3
commit
3685f8c51e
@@ -8,13 +8,14 @@ import com.intellij.openapi.components.PathMacroManager;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.project.ProjectUtil;
|
||||
import com.intellij.openapi.util.SystemInfo;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.openapi.vfs.VfsUtilCore;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.openapi.vfs.impl.wsl.WslConstants;
|
||||
import com.intellij.platform.eel.EelDescriptor;
|
||||
import com.intellij.platform.eel.EelPlatformKt;
|
||||
import com.intellij.platform.eel.provider.EelProviderUtil;
|
||||
import com.intellij.platform.eel.provider.LocalEelDescriptor;
|
||||
import com.intellij.platform.eel.provider.utils.EelUtilsKt;
|
||||
import com.intellij.terminal.ui.TerminalWidget;
|
||||
import com.intellij.util.EnvironmentRestorer;
|
||||
@@ -113,23 +114,20 @@ public final class LocalOptionsConfigurer {
|
||||
private static @NotNull Map<String, String> getTerminalEnvironment(@NotNull Map<String, String> baseEnvs,
|
||||
@NotNull String workingDir,
|
||||
@NotNull Project project,
|
||||
@Nullable EelDescriptor eelDescriptor) {
|
||||
final var isWindows =
|
||||
eelDescriptor == null
|
||||
? SystemInfo.isWindows
|
||||
: switch (eelDescriptor.getOsFamily()) {
|
||||
case Posix -> false;
|
||||
case Windows -> true;
|
||||
};
|
||||
@NotNull EelDescriptor eelDescriptor) {
|
||||
final var isWindows = EelPlatformKt.isWindows(eelDescriptor.getOsFamily());
|
||||
|
||||
Map<String, String> envs = isWindows ? CollectionFactory.createCaseInsensitiveStringMap() : new HashMap<>();
|
||||
EnvironmentVariablesData envData = TerminalProjectOptionsProvider.getInstance(project).getEnvData();
|
||||
if (envData.isPassParentEnvs()) {
|
||||
if (eelDescriptor != null) {
|
||||
envs.putAll(fetchLoginShellEnvVariables(eelDescriptor));
|
||||
if (eelDescriptor == LocalEelDescriptor.INSTANCE) {
|
||||
// Use the default environment variables when running locally.
|
||||
// Calling `fetchLoginShellEnvVariables(eelDescriptor)` retrieves shell environment variables
|
||||
// via `com.intellij.util.EnvironmentUtil.getEnvironmentMap`, which can break PATH.
|
||||
envs.putAll(System.getenv());
|
||||
}
|
||||
else {
|
||||
envs.putAll(System.getenv());
|
||||
envs.putAll(fetchLoginShellEnvVariables(eelDescriptor));
|
||||
}
|
||||
EnvironmentRestorer.restoreOverriddenVars(envs);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user