Skip to content

终端有问题 #2892

Open

Description

@jjnian

Chat2DB Edition

Chat2DB Community

Chat2DB Version

5.3.4

Deployment

Desktop

Operating System

Windows

Operating System Version

window10

Database and Version

No response

Problem Summary

Image 终端不能用

Steps to Reproduce

1、打开终端设置
2、显示终端有问题

Expected Behavior

我希望能设置终端

Actual Behavior

终端设置有问题

Logs

Screenshots or Additional Context

No response

Impact

Data loss

Workaround

No known workaround

Submission Checklist

  • I reproduced this on the selected Chat2DB edition.
  • I searched existing issues for duplicates.
  • I removed credentials and private data.

Activity

  1. added theissue type on Sep 9, 2026
  2. self-assigned this
    on Sep 9, 2026
  3. auenger commented on Sep 9, 2026

    @auenger
    Contributor

    @jjnian 你好 我们明天更新以下版本 ,如果还有同样的问题 可以麻烦进行一下相关信息的检查

    1. 复现并收集日志

    打开 Chat2DB:

    • 进入终端设置页面
    • 等待出现“无法读取当前系统的 Shell 列表”
    • 记下当前时间
    • 点击“帮助 → 打开日志”
    • 找到 application.log

    如果菜单无法打开日志,请检查:

    %USERPROFILE%.chat2db\chat2db-community\logs\application.log

    把报错时间前后约 100 行发给我们。也可以在 PowerShell 中执行:

    $log = "$env:USERPROFILE.chat2db\chat2db-community\logs\application.log"

    Select-String -Path $log -Context 5,20 -Pattern `
    'get-terminal-capabilities',
    'InvalidPathException',
    'Error processing request',
    'GetTerminalCapabilitiesHandler',
    'Java Query'

    1. 检查系统 Shell

    打开 PowerShell,执行:

    $env:ComSpec
    Test-Path -LiteralPath $env:ComSpec

    Get-Command cmd.exe, powershell.exe, pwsh.exe, bash.exe `
    -ErrorAction SilentlyContinue |
    Select-Object Name, Source

    把完整输出发给我们。

    1. 检查 PATH 是否存在异常条目

    继续在 PowerShell 执行:

    $i = 0

    $env:Path -split ';' | ForEach-Object {
    $entry = $_
    $cleanEntry = $entry.Trim().Trim('"')

      [PSCustomObject]@{
          Index       = $i++
          Empty       = [string]::IsNullOrWhiteSpace($entry)
          HasQuotes   = $entry.Contains('"')
          Exists      = if ($cleanEntry) {
              Test-Path -LiteralPath $cleanEntry -ErrorAction SilentlyContinue
          } else {
              $false
          }
          Entry       = $entry
      }
    

    } | Format-Table -AutoSize -Wrap

    特别需要保留输出中:

    • HasQuotes = True 的条目
    • 路径中包含孤立双引号的条目
    • 明显被两个路径拼接在一起的条目
    • 空条目
    • 最近新增的软件目录

    发送前可以遮盖用户名、公司名等敏感部分,但请保留双引号、分号和路径结构。

  4. jjnian commented on Sep 11, 2026

    @jjnian
    Author

    这是日志打印的log:

    2026-09-11 15:39:31.051 ERROR 14272 --- [pool-1-thread-14] a.c.community.jcef.frame.MainJFrame .740 : | Error processing request [action: get-terminal-capabilities]: Illegal char <"> at index 0: "C:\windows\system32\bash

    java.nio.file.InvalidPathException: Illegal char <"> at index 0: "C:\windows\system32\bash
    at java.base/sun.nio.fs.WindowsPathParser.normalize(WindowsPathParser.java:177)
    at java.base/sun.nio.fs.WindowsPathParser.parse(WindowsPathParser.java:153)
    at java.base/sun.nio.fs.WindowsPathParser.parse(WindowsPathParser.java:77)
    at java.base/sun.nio.fs.WindowsPath.parse(WindowsPath.java:92)
    at java.base/sun.nio.fs.WindowsFileSystem.getPath(WindowsFileSystem.java:232)
    at java.base/java.nio.file.Path.of(Path.java:147)
    at ai.chat2db.community.jcef.terminal.TerminalSessionManager.findCommand(TerminalSessionManager.java:425)
    at ai.chat2db.community.jcef.terminal.TerminalSessionManager.capabilities(TerminalSessionManager.java:179)
    at ai.chat2db.community.jcef.handler.biz.GetTerminalCapabilitiesHandler.handle(GetTerminalCapabilitiesHandler.java:14)
    at ai.chat2db.community.jcef.frame.MainJFrame$5.lambda$onQuery$0(MainJFrame.java:683)
    at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
    at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
    at java.base/java.lang.Thread.run(Thread.java:840)

  5. auenger commented on Sep 11, 2026

    @auenger
    Contributor

    @jjnian

    已经定位,原因很明确:用户的 Windows PATH 中有一个以双引号开头的路径条目,例如:

    "C:\windows\system32

    程序在这个目录后拼接 bash,形成:

    "C:\windows\system32\bash

    Java 认为 " 是 Windows 路径非法字符,于是抛出 InvalidPathException,导致整个 Shell 列表读取失败。

    这不是 Bash 未安装导致的,而是 PATH 格式异常,同时也说明应用的 PATH 扫描逻辑容错不足。

    让用户这样处理:

    1. 按 Win + R,输入:

    sysdm.cpl

    1. 进入:

    高级 → 环境变量

    1. 分别检查:
    • 用户变量中的 Path
    • 系统变量中的 Path
    1. 找到带双引号的条目,例如:

    "C:\windows\system32"

    改成:

    C:\Windows\System32

    只删除双引号,不要删除 System32 这条路径。即使路径包含空格,Windows 的 PATH 条目通常也不需要双引号。

    麻烦您先处理一下试试看, 后续版本 这个问题 我做一下兼容

  6. moved this from Inbox to In Review in Chat2DB Communityon Sep 11, 2026
  7. jjnian commented on Sep 11, 2026

    @jjnian
    Author

    我刚看了 我的path里面的东西没有带引号的

  8. auenger commented on Sep 11, 2026

    @auenger
    Contributor

    我来检查一下代码 ,逻辑健壮一点

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

Projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions