fix: make shell more robust (#3051)

This commit is contained in:
Haris Gušić
2025-10-14 00:37:35 +02:00
committed by GitHub
parent cd13a8524e
commit dbe9fd00b7

View File

@@ -1290,20 +1290,46 @@ export namespace SessionPrompt {
const shell = process.env["SHELL"] ?? "bash"
const shellName = path.basename(shell)
const scripts: Record<string, string> = {
nu: input.command,
fish: `eval "${input.command}"`,
const invocations: Record<string, { args: string[] }> = {
nu: {
args: ["-c", input.command],
},
fish: {
args: ["-c", input.command],
},
zsh: {
args: [
"-c",
"-l",
`
[[ -f ~/.zshenv ]] && source ~/.zshenv >/dev/null 2>&1 || true
[[ -f "\${ZDOTDIR:-$HOME}/.zshrc" ]] && source "\${ZDOTDIR:-$HOME}/.zshrc" >/dev/null 2>&1 || true
${input.command}
`
],
},
bash: {
args: [
"-c",
"-l",
`
[[ -f ~/.bashrc ]] && source ~/.bashrc >/dev/null 2>&1 || true
${input.command}
`,
],
},
// Fallback: any shell that doesn't match those above
"": {
args: [
"-c",
"-l",
`${input.command}`,
],
},
}
const script =
scripts[shellName] ??
`[[ -f ~/.zshenv ]] && source ~/.zshenv >/dev/null 2>&1 || true
[[ -f "\${ZDOTDIR:-$HOME}/.zshrc" ]] && source "\${ZDOTDIR:-$HOME}/.zshrc" >/dev/null 2>&1 || true
[[ -f ~/.bashrc ]] && source ~/.bashrc >/dev/null 2>&1 || true
eval "${input.command}"`
const isFishOrNu = shellName === "fish" || shellName === "nu"
const args = isFishOrNu ? ["-c", script] : ["-c", "-l", script]
const matchingInvocation = invocations[shellName] ?? invocations[""];
const args = matchingInvocation?.args
const proc = spawn(shell, args, {
cwd: Instance.directory,