如屏幕截图所示,终端当前宽度为 100 个字符,而且我所知道的两种检测方法都返回了正确的值。尽管如此,除非我明确将选项设置--width
为100
,否则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'