OpenChamber 工作台终端默认使用 Git Bash

作者:Administrator 发布时间: 2026-09-22 阅读量:0 评论数:0

让 OpenChamber 工作台终端默认使用 Git Bash

目标

OpenChamber 工作台(Workbench)里打开的终端,默认启动 Git Bash,而不是原来的 cmd.exe

背景:原来是哪个 shell

OpenChamber 终端设置里 terminalShell 默认为 auto。在 Windows 上,auto 会按下面的顺序取第一个存在的可执行文件:

  1. 环境变量 OPENCHAMBER_TERMINAL_SHELL
  2. 环境变量 SHELL
  3. 环境变量 ComSpec
  4. <SystemRoot>\System32\WindowsPowerShell\v1.0\powershell.exe
  5. pwsh.exe
  6. powershell.exe
  7. cmd.exe

本机实际情况:

  • SHELL 为空
  • OPENCHAMBER_TERMINAL_SHELL 未设置
  • ComSpec = C:\WINDOWS\system32\cmd.exe

所以 auto 命中第 3 项,终端启动的是 cmd.exe

解决办法

把环境变量 OPENCHAMBER_TERMINAL_SHELL 指向 Git 的 bash.exe。这样 auto 会命中第 1 项,直接启动 Git Bash。

1. 设置用户环境变量

在 PowerShell 中执行:

[Environment]::SetEnvironmentVariable(
    'OPENCHAMBER_TERMINAL_SHELL',
    'C:\Program Files\Git\bin\bash.exe',
    'User'
)

验证:

[Environment]::GetEnvironmentVariable('OPENCHAMBER_TERMINAL_SHELL', 'User')
Test-Path 'C:\Program Files\Git\bin\bash.exe'

应分别输出:

C:\Program Files\Git\bin\bash.exe
True

2. 保持终端设置为 auto

OpenChamber → 设置 → 外观 → Terminal shell,保持为 Auto(默认值)即可,不要显式选择其它 shell(显式选择会覆盖 auto)。

对应的持久化配置项(仅供参考,无需手动改):

"terminalShell": "auto"

3. 重启 OpenChamber

环境变量是在进程启动时继承的,必须完全退出并重新打开 OpenChamber 才会生效。

重启后,工作台里新开的终端即为 Git Bash。

补充修复:Git Bash 里 lsgrepcat 等命令找不到

现象

切到 Git Bash 后,lspwd 之外的很多命令报 command not found,和正常的 Git Bash 不一样。

根因

Windows 注册表里的变量名是 Path(首字母大写),而 OpenChamber 启动终端时会构造环境变量对象:

{ ...process.env, PATH: buildAugmentedPath(), ... }

这会产生两个仅大小写不同的键PathPATH,Windows 环境块里同时存在这两项:

  • Git 的启动器 C:\Program Files\Git\bin\bash.exe(compat-bash)会把 MSYS 目录(/usr/bin/mingw64/bin)追加到 Path 上;
  • 但 MSYS/Cygwin 的 bash 是按大小写敏感读取环境变量的,它只读全大写的 PATH,于是看不到 /usr/binls/grep 等 coreutils 全部找不到。

cmd / PowerShell 读环境变量不区分大小写,所以之前用 cmd 时完全正常,只有换成 Git Bash 才暴露出来。

修复

把 Git 的 usr\binmingw64\bin 追加到用户 Path,这样 OpenChamber 生成的大写 PATH 里也会带上它们:

$cur = [Environment]::GetEnvironmentVariable('Path','User')
$add = 'C:\Program Files\Git\usr\bin;C:\Program Files\Git\mingw64\bin'
[Environment]::SetEnvironmentVariable('Path', $cur.TrimEnd(';') + ';' + $add, 'User')

然后重启 OpenChamber,新开的终端里 lsgrepsedfind 等即可正常使用。

可选:开启登录 shell

在 设置 → 外观 → Terminal shell 处开启 login shell 开关(对应 terminalLoginShells),
shell 会以 -l 启动并加载 /etc/profile,除了修复 PATH,还能获得 Git Bash 快捷方式同款的别名(lldir 等)。
仅靠上面的 Path 修复也能让常用命令可用,此项可选。

注意事项

  • 如果在设置里把 Terminal shell 显式选成了 cmd / powershell 等,OPENCHAMBER_TERMINAL_SHELL 将不再起作用;要用 Git Bash 就保持 auto

  • 若想改回原来的行为,删除该用户环境变量即可:

    [Environment]::SetEnvironmentVariable('OPENCHAMBER_TERMINAL_SHELL', $null, 'User')
    
  • 本方案只影响 OpenChamber 的工作台终端,不影响系统里其它终端的默认 shell。

相关改动(同一目标下的其它终端)

围绕“默认用 Git Bash”这个目标,另外两处也做过配置,一并记录:

PowerShell 里输入 bash

在 PowerShell 配置文件中把 bash 指向 Git Bash:

文件:C:\Users\lu\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1

function bash {
    & "C:\Program Files\Git\bin\bash.exe" --login -i @args
}

(同时把执行策略设为 CurrentUserRemoteSigned,否则配置文件不会加载。)

Windows Terminal 下拉菜单里出现 Git Bash

在 Windows Terminal 的 settings.jsonprofiles.list 中新增了一个 profile:

文件:C:\Users\lu\AppData\Local\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json

{
    "commandline": "\"%PROGRAMFILES%\\Git\\bin\\bash.exe\" --login -i",
    "guid": "{2ece5bfe-50ed-5f3a-ab87-5cd4baafed2b}",
    "hidden": false,
    "icon": "%PROGRAMFILES%\\Git\\mingw64\\share\\git\\git-for-windows.ico",
    "name": "Git Bash",
    "startingDirectory": "%USERPROFILE%"
}

评论