From ee416bb9b8ce0a1aeca3eeaed317337b64cd59e5 Mon Sep 17 00:00:00 2001 From: meganrogge Date: Tue, 22 Feb 2022 12:19:09 -0600 Subject: [PATCH] fix #143638 --- .../contrib/terminal/browser/terminalProcessManager.ts | 5 ++++- .../terminal/electron-sandbox/localTerminalBackend.ts | 2 ++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/vs/workbench/contrib/terminal/browser/terminalProcessManager.ts b/src/vs/workbench/contrib/terminal/browser/terminalProcessManager.ts index f35509b463d..3c63d3c9db0 100644 --- a/src/vs/workbench/contrib/terminal/browser/terminalProcessManager.ts +++ b/src/vs/workbench/contrib/terminal/browser/terminalProcessManager.ts @@ -456,12 +456,15 @@ export class TerminalProcessManager extends Disposable implements ITerminalProce if (shellIntegration.enableShellIntegration) { shellLaunchConfig.args = shellIntegration.args; if (env?.['ZDOTDIR']) { - shellLaunchConfig.env = shellLaunchConfig.env || {} as IProcessEnvironment; const activeWorkspaceRootUri = this._historyService.getLastActiveWorkspaceRoot(Schemas.file); const lastActiveWorkspaceRoot = activeWorkspaceRootUri ? withNullAsUndefined(this._workspaceContextService.getWorkspaceFolder(activeWorkspaceRootUri)) : undefined; const resolved = await this._configurationResolverService.resolveAsync(lastActiveWorkspaceRoot, env['ZDOTDIR']); env['ZDOTDIR'] = resolved; } + if (env?.['VSCODE_SHELL_LOGIN'] && shellLaunchConfig.env?.['VSCODE_SHELL_LOGIN']) { + this._logService.info('vscode shell login'); + shellLaunchConfig.env['VSCODE_SHELL_LOGIN'] = env?.['VSCODE_SHELL_LOGIN']; + } // Always resolve the injected arguments on local processes await this._terminalProfileResolverService.resolveShellLaunchConfig(shellLaunchConfig, { remoteAuthority: undefined, diff --git a/src/vs/workbench/contrib/terminal/electron-sandbox/localTerminalBackend.ts b/src/vs/workbench/contrib/terminal/electron-sandbox/localTerminalBackend.ts index 74fb08b2f02..4b0cef6145a 100644 --- a/src/vs/workbench/contrib/terminal/electron-sandbox/localTerminalBackend.ts +++ b/src/vs/workbench/contrib/terminal/electron-sandbox/localTerminalBackend.ts @@ -150,6 +150,8 @@ class LocalTerminalBackend extends BaseTerminalBackend implements ITerminalBacke shouldPersist: boolean ): Promise { const executableEnv = await this._shellEnvironmentService.getShellEnv(); + executableEnv['VSCODE_SHELL_LOGIN'] = env['VSCODE_SHELL_LOGIN']; + executableEnv['ZDOTDIR'] = env['ZDOTDIR']; const id = await this._localPtyService.createProcess(shellLaunchConfig, cwd, cols, rows, unicodeVersion, env, executableEnv, windowsEnableConpty, shouldPersist, this._getWorkspaceId(), this._getWorkspaceName()); const pty = this._instantiationService.createInstance(LocalPty, id, shouldPersist); this._ptys.set(id, pty);