修复copilot 与Windows 的copilot 冲突

This commit is contained in:
2026-05-28 23:02:24 +08:00
parent 8ceccd75f1
commit e8693dad2a
4 changed files with 123 additions and 4 deletions

View File

@@ -160,12 +160,27 @@ else
fi
fi
COPILOT_EXT_BIN="$HOME/.local/share/gh/extensions/gh-copilot/gh-copilot"
NEED_COPILOT_INSTALL=false
if gh extension list 2>/dev/null | grep -q 'github/gh-copilot'; then
log "GitHub Copilot CLI 扩展已安装"
# 验证是否为原生 Linux 二进制,而非 VS Code 写入的 Windows .bat wrapper
if [ -f "$COPILOT_EXT_BIN" ] && grep -qiE '/mnt/[a-z]/|.bat' "$COPILOT_EXT_BIN" 2>/dev/null; then
warn "检测到 Windows 版 gh-copilot 扩展(非 Linux 原生),将重新安装..."
gh extension remove github/gh-copilot 2>/dev/null || rm -rf "$(dirname "$COPILOT_EXT_BIN")"
NEED_COPILOT_INSTALL=true
else
log "GitHub Copilot CLI 扩展已安装(原生 Linux 版)"
fi
else
NEED_COPILOT_INSTALL=true
fi
if [ "$NEED_COPILOT_INSTALL" = true ]; then
log "安装 GitHub Copilot CLI 扩展..."
gh extension install github/gh-copilot
log "GitHub Copilot CLI 扩展已安装命令入口gh copilot"
if gh extension install github/gh-copilot 2>/dev/null; then
log "GitHub Copilot CLI 扩展已安装命令入口gh copilot"
else
warn "GitHub Copilot CLI 扩展安装失败可稍后手动执行gh extension install github/gh-copilot"
fi
fi
mkdir -p ~/.claude
@@ -179,6 +194,19 @@ PROFILE_BLOCK=""
[ -n "$ANTHROPIC_BASE_URL" ] && PROFILE_BLOCK+="export ANTHROPIC_BASE_URL='$ANTHROPIC_BASE_URL'\n"
PROFILE_BLOCK+="export CLAUDE_MODEL='$CLAUDE_MODEL'\n"
# 从 PATH 过滤掉 VS Code Copilot Chat 写入的 Windows copilot 包装脚本
# 该脚本会调用 .bat 文件,在 Linux 下无法执行,导致 gh copilot 报错
if ! grep -q 'copilotCli' ~/.bashrc 2>/dev/null; then
cat >> ~/.bashrc << 'PATHFIX'
# 排除 VS Code Copilot Chat Windows wrappergh copilot 在 WSL2 中会误调用 .bat 文件)
PATH="$(echo "$PATH" | tr ':' '\n' | grep -Fv 'copilotCli' | tr '\n' ':' | sed 's/:$//')"
PATHFIX
log "已写入 PATH 修复(排除 Windows copilotCli到 ~/.bashrc"
fi
# 在当前 shell 也立即生效
PATH="$(echo "$PATH" | tr ':' '\n' | grep -Fv 'copilotCli' | tr '\n' ':' | sed 's/:$//')"
for rc in ~/.bashrc ~/.profile; do
if ! grep -q "ANTHROPIC_API_KEY" "$rc" 2>/dev/null; then
printf "\n# Claude Code CLI\n${PROFILE_BLOCK}" >> "$rc"