git 无法正确确定终端宽度(git-bash,windows)

git 无法正确确定终端宽度(git-bash,windows)

出现问题的终端的屏幕截图

如屏幕截图所示,终端当前宽度为 100 个字符,而且我所知道的两种检测方法都返回了正确的值。尽管如此,除非我明确将选项设置--width100,否则git column似乎会恢复80为终端宽度。这种行为并不一定是意外的,因为文档git column状态:

--width=<width>
指定终端宽度。默认情况下,git column 将检测终端宽度,如果无法检测,则回退到 80

因此,git 显然无法确定我的终端中的列数。那么问题是:为什么?我找不到有关如何进行此检测的任何文档。

以下是一些(可能)相关的系统信息:

$ git --version
git version 2.43.0.windows.1
$ systeminfo | grep -i 'OS Name\|OS Version'
OS Name:                   Microsoft Windows 11 Pro
OS Version:                10.0.22631 N/A Build 22631

我可以提供我的 bash 配置文件的任何其他相关部分和/或有关我的系统设置的其他详细信息。

答案1

我在帖子中发现了一些有趣的信息 脚本中丢失的 LINES 和 COLUMNS 环境变量 这也许可以解释这个问题:

在现代系统中,$COLUMNS$LINES变量通常是 不是环境变量。shell 在每个命令之后动态设置这些值,我们通常无法从非交互式脚本访问它们。如果我们 出口但是这种行为并不是标准化的,也没有得到普遍支持。

Bash 在以下范围内设置这些变量:过程(不是环境)当我们checkwinsize使用以下命令启用该选项时:

shopt -s checkwinsize 

许多系统在默认或系统范围的启动文件中为我们启用此选项(在 /etc/bashrc 中或类似),因此我们需要记住这些变量可能并不总是可用的。在某些系统上,例如 Cygwin,此选项不是对我们来说是启用的,所以 Bash 不会设置$COLUMNS$LINES除非我们执行上面的行或将它添加到我们的~/.bashrc

您遇到的情况可能是由于某种原因未设置列,您可以按照上面描述的方法解决问题。

如果由于某种原因此方法仍然不起作用,最终的解决方法是:

alias git='COLUMNS=$(tput cols) git'

相关内容