少于 1 分钟阅读 次阅读

项目地址

出问题的旧插件(此插件不再维护):https://github.com/github0null/keil-assistant 新插件:https://github.com/ruiwarn/keil-assistant

问题描述: 当 VS Code 的默认集成终端设置为 bash (例如 Git Bash 或 WSL) 时,尝试使用 Keil Assistant 扩展的命令 (如构建、烧录) 会失败,并提示以下错误:

/usr/bin/bash: -c: line 1: syntax error near unexpected token `&'
/usr/bin/bash: -c: line 1: `& c:\Users\Witheart\.vscode\extensions\cl.keil-assistant-1.7.0\bin\Uv4Caller.exe ... '${uv4Path} -r ${prjPath} -j0 -t ${targetName}'''

终端进程以退出代码 2 终止。在此配置下,Keil Assistant 的功能无法使用。

重现步骤:

  1. 确保 VS Code 的默认集成终端设置为 bash (在 settings.json 中配置 "terminal.integrated.defaultProfile.windows" 为类似 “Git Bash” 的选项)。
  2. 尝试运行 Keil Assistant 命令 (例如 Keil: Rebuild, Keil: Build & Run)。
  3. 在终端中观察到上述语法错误,任务执行失败。

实际输出: 终端输出显示与 & 字符相关的语法错误。任务立即失败。 (复制你完整的错误日志,包括开头的 /usr/bin/bash: ... 和结尾的 终端进程...退出代码: 2)

预期行为: 无论用户在 VS Code 中配置的是哪种默认终端 (bash, cmd, PowerShell 等),Keil Assistant 的命令都应成功执行。

临时解决方法: 将 VS Code 默认集成终端临时设置为 命令提示符 (cmd.exe) 可以解决问题:

"terminal.integrated.defaultProfile.windows": "Command Prompt",

环境信息:

  • 操作系统: Windows (根据路径推测)
  • VS Code 版本: [请填写你的 VS Code 版本号,例如:1.86.0]
  • Keil Assistant 扩展版本: cl.keil-assistant-1.7.0
  • Keil uVision 版本: E:\software\Keil_v5\UV4\UV4.exe (请提供你的版本,例如 v5.xx?)
  • 导致问题的终端类型: bash (Git Bash 的 /usr/bin/bash)

问题分析: 问题的根本原因似乎是传递给 bash.exe -c 调用的命令字符串& 字符开头

  • bash shell 中,& 是用于在后台运行命令的元字符
  • & 放在命令字符串的最开头是无效的语法,导致立即报错。 观察被执行的命令 (从日志中可见):
    & c:\Users\...\Uv4Caller.exe ... '${uv4Path} -r ${prjPath} -j0 -t ${targetName}'
    

    注意开头的 &。这种语法在 cmd.exe 中可以工作(cmd 将其解释为命令分隔符或特殊变量引用的一部分),但在 bash 中是无效的。

留下评论