Git Bash 不使用 Windows 终端设置中指定的源值

Git Bash 不使用 Windows 终端设置中指定的源值

直到昨天,我的 Windows 终端的 settings.json 中都有这个 Git Bash 配置文件:

...,
"defaultProfile": "{my_guid}",
"profiles": 
{
    "defaults": {},
    "list": 
    [
        {
            "guid": "{my_guid}",
            "hidden": false,
            "name": "Git Bash",
            "source": "Git"
        },
        ...
    ]
}
...

它简单地起作用了,我可以使用该配置文件并将其设置为默认值。

今天,该配置文件无法识别,Windows 终端打开时会显示未找到默认配置文件的警告,并且 Git Bash 配置文件不在下拉列表中。

我知道我可以设置配置文件来使用 Git Bash 可执行文件的路径,但我想知道发生了什么变化。

为什么使用源属性的配置文件以前有效?为什么现在不再有效?指定此内容的文档或发行说明在哪里?

答案1

为什么之前使用源属性的配置文件可以起作用?

"source"属性表示“动态概况“ 或 ”JSON 片段扩展“适用于 Windows 终端。虽然 JSON 片段扩展是一个相当新的功能,但在我回答这个问题时,微软文档"source"属性仍然只是提到它们用于动态配置文件。因此,抱歉,我之前对这个答案的看法是假设这是一个动态配置文件。

Windows Terminal 包含用于 WSL(任何已安装的发行版)、PowerShell Core 和 Azure 的动态配置文件的内置生成器(尽管这似乎更像是一个静态生成器)。您可以在以下位置找到生成器此目录源的。

JSON 片段扩展可用于第三方应用程序,例如 Git Bash,后者最近将其添加为其安装程序中的功能

在您确认 Git Bash 确实使用了该"source"属性后,我决定试用安装程序并确认片段扩展的使用。正如预期的那样,我在我的settings.json配置文件(以及设置 UI)中看到了与您所做的相同的事情:

{
    "guid": "{2ece5bfe-50ed-5f3a-ab87-5cd4baafed2b}",
    "hidden": false,
    "name": "Git Bash",
    "source": "Git"
}

在 中C:\ProgramData\Microsoft\Windows Terminal\Fragments\Git,我可以看到实际的扩展(git-bash.json):

{
    "profiles": [
        {
          "guid": "{2ece5bfe-50ed-5f3a-ab87-5cd4baafed2b}",
           "name": "Git Bash",
           "commandline": "d:/winbin/development/Git/bin/bash.exe -i -l",
           "icon": "d:/winbin/development/Git/mingw64/share/git/git-for-windows.ico",
           "startingDirectory": "%USERPROFILE%"
        }
    ]
}

为什么它不再起作用了?

说实话我不太确定。在我有限的测试中,该功能似乎非常强大。唯一能破坏它的方法就是做一些病态的事情,比如:

  • 编辑片段本身(需要 UAC 提升),这会导致您收到不同的错误。
  • "guid"手动更改属性
  • 手动删除片段

我尝试过的大多数其他事情都是可以恢复的或预期的:

  • 卸载 Windows 版 Git - 正确删除了片段。Windows 终端甚至足够智能,可以在重新启动时删除空的父文件夹。

  • 删除配置文件本身settings.json——因为片段仍然存在,所以一旦保存更改就会自动重新创建。

相关内容