新安装的 AlmaLinux 9 上的 LINES 和 COLUMNS 问题(使用 Putty)

新安装的 AlmaLinux 9 上的 LINES 和 COLUMNS 问题(使用 Putty)

我似乎在 Almalinux 9 上遇到了一个奇怪的问题,我一直无法解决。

看起来 LINES 和 COLUMNS 变量没有为交互式登录 shell 设置完整大小,尽管它们为交互式非登录 shell 设置了完整大小。不幸的是,这会带来某些工具的副作用,例如vimlessman当用户登录时似乎无法正常运行(当我在由 提供的 VM 上激活控制台时,我会得到一个交互式、非登录的 root shell qemu-guest-agent)。

我在以前的任何部署中都没有遇到过这个问题,并且四处搜索后发现了一些有关 shell 自动设置这些值的信息(我使用的是bashv5.1.8)。我已经确认通过 为所有交互式 shellcheckwinsize设置了shell 选项,但在尝试调整终端大小时看不到任何更改(显然这似乎只影响 Putty 终端并且仅在 Almalinux 9 上)。on/etc/bashrc

我在每个会话中运行以下别名(位于/tmp/size.sh)以尝试显示我的问题是什么:

alias test_size="echo -e \
    \"login: \$(shopt -q login_shell && echo 'yes' || echo 'no') \
    \ninteractive: \$([[ -t 0 || -p '/dev/stdin' ]] && echo 'yes' || echo 'no') \
    \n\$(id) \
    \n\$(tty) \$TERM \${COLUMNS}x\${LINES} \
    \""

KVM 的默认控制台具有正确的全屏尺寸(列 = 425,行 = 79):

bash-5.1# . /tmp/size.sh
bash-5.1# test_size
login: no
interactive: yes
uid=0(root) gid=0(root) groups=0(root) context=system_u:system_r:unconfined_t:s0
/dev/pts/0 putty-256color 425x79

非登录 shell 的大小也是正确的:

bash-5.1# su test2
[test2@files01 /]$ . /tmp/size.sh
[test2@files01 /]$ test_size
login: no
interactive: yes
uid=1001(test2) gid=1001(test2) groups=1001(test2) context=system_u:system_r:unconfined_t:s0
/dev/pts/0 putty-256color 425x79
[test2@files01 /]$
exit

登录 shell 的大小非常小(COLUMNS=80,LINES=24):

bash-5.1# su - test2
[test2@files01 ~]$ . /tmp/size.sh
[test2@files01 ~]$ test_size
login: yes
interactive: yes
uid=1001(test2) gid=1001(test2) groups=1001(test2) context=system_u:system_r:unconfined_t:s0
/dev/pts/0 putty-256color 80x24
[test2@files01 ~]$
logout

在输入此内容时,我发现另一台计算机上的终端运行正常并响应调整大小。

大小合适的交互式登录 shell:

[root@files01 ~]# . /tmp/size.sh 
[root@files01 ~]# test_size
login: yes  
interactive: yes    
uid=0(root) gid=0(root) groups=0(root) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023    
/dev/pts/1 xterm-256color 238x58 

所以现在感觉这可能是一个问题TERM=putty-256color,但我不确定同一终端是否适用于我的其他部署。我ncurses-base-6.2-10.20210508提供了putty-256colorterminfo,它似乎是 Almalinux 9 中提供的最新版本。我有一个使用较新ncursesterminfo (v6.4.20231202) 的滚动发行版,在使用 Putty 时,它的行为正确且调整大小正确。

我的问题是如何获得正确的全屏尺寸并checkwinsize在所有登录的所有终端上工作?我在任何其他安装(主要是 CentOS 7/8、Debian 10/11/12 和 OpenSUSE Tumbleweed)上都没有看到这个特定问题。我希望避免为每个用户硬编码行和列的大小。我可以提供任何需要帮助的进一步信息。

谢谢

相关内容