fix: make shell more robust (#3051)
This commit is contained in:
parent
cd13a8524e
commit
dbe9fd00b7
1 changed files with 38 additions and 12 deletions
|
|
@ -1290,20 +1290,46 @@ export namespace SessionPrompt {
|
||||||
const shell = process.env["SHELL"] ?? "bash"
|
const shell = process.env["SHELL"] ?? "bash"
|
||||||
const shellName = path.basename(shell)
|
const shellName = path.basename(shell)
|
||||||
|
|
||||||
const scripts: Record<string, string> = {
|
const invocations: Record<string, { args: string[] }> = {
|
||||||
nu: input.command,
|
nu: {
|
||||||
fish: `eval "${input.command}"`,
|
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 =
|
const matchingInvocation = invocations[shellName] ?? invocations[""];
|
||||||
scripts[shellName] ??
|
const args = matchingInvocation?.args
|
||||||
`[[ -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 proc = spawn(shell, args, {
|
const proc = spawn(shell, args, {
|
||||||
cwd: Instance.directory,
|
cwd: Instance.directory,
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue