diff --git a/apps/server/src/terminal/Layers/Manager.test.ts b/apps/server/src/terminal/Layers/Manager.test.ts index 8207861e20..799f003aeb 100644 --- a/apps/server/src/terminal/Layers/Manager.test.ts +++ b/apps/server/src/terminal/Layers/Manager.test.ts @@ -830,12 +830,17 @@ it.layer(NodeServices.layer, { excludeTestServices: true })("TerminalManager", ( assert.equal(snapshot.status, "running"); expect(ptyAdapter.spawnInputs.length).toBeGreaterThanOrEqual(2); - expect(ptyAdapter.spawnInputs[0]?.shell).toBe("/definitely/missing-shell"); + expect(ptyAdapter.spawnInputs[0]?.shell).toBe( + process.platform === "win32" ? "/definitely/missing-shell -l" : "/definitely/missing-shell", + ); if (process.platform === "win32") { expect( ptyAdapter.spawnInputs.some( - (input) => input.shell === "cmd.exe" || input.shell === "powershell.exe", + (input) => + input.shell === "cmd.exe" || + input.shell === "powershell.exe" || + input.shell === "pwsh.exe", ), ).toBe(true); } else { diff --git a/apps/server/src/terminal/Layers/Manager.ts b/apps/server/src/terminal/Layers/Manager.ts index 5dc216e37e..6eb9438fef 100644 --- a/apps/server/src/terminal/Layers/Manager.ts +++ b/apps/server/src/terminal/Layers/Manager.ts @@ -182,7 +182,7 @@ function enqueueProcessEvent( function defaultShellResolver(): string { if (process.platform === "win32") { - return process.env.ComSpec ?? "cmd.exe"; + return "pwsh.exe"; } return process.env.SHELL ?? "bash"; } @@ -234,8 +234,9 @@ function resolveShellCandidates(shellResolver: () => string): ShellCandidate[] { if (process.platform === "win32") { return uniqueShellCandidates([ requested, - shellCandidateFromCommand(process.env.ComSpec ?? null), + shellCandidateFromCommand("pwsh.exe"), shellCandidateFromCommand("powershell.exe"), + shellCandidateFromCommand(process.env.ComSpec ?? null), shellCandidateFromCommand("cmd.exe"), ]); }