Almalinux 9에서 내가 해결할 수 없는 이상한 문제에 봉착한 것 같습니다.
LINES 및 COLUMNS 변수는 대화형 비로그인 쉘의 경우 전체 크기로 설정되어 있지만 대화형 로그인 쉘의 경우 전체 크기로 설정되지 않은 것으로 보입니다. 불행하게도 이는 사용자가 vim
로그인 less
할 때 일부 도구가 제대로 작동하지 않는 것처럼 보이는 부작용이 있습니다 man
(제공된 VM에서 콘솔을 활성화하면 대화형 비로그인 루트 셸이 나타납니다 qemu-guest-agent
).
이전 배포에서는 이 문제가 발생하지 않았으며 검색을 통해 이러한 값을 자동으로 설정하는 셸에 대한 일부 정보를 찾았습니다( bash
v5.1.8을 사용하고 있습니다). 모든 대화형 셸에 대해 셸 옵션을 설정하여 이를 확인했지만 checkwinsize
터미널 크기를 조정하려고 할 때 변경 사항이 표시되지 않습니다(분명히 이는 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
비로그인 셸의 크기도 정확합니다.
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
로그인 셸의 크기는 매우 작습니다(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
이것을 입력하는 동안 다른 컴퓨터의 터미널이 제대로 실행되고 크기 조정에 반응하는 것을 발견했습니다.
적절한 크기의 대화형 로그인 셸:
[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
동일한 터미널이 다른 배포에서도 작동할지는 확실하지 않습니다. 나는 Almalinux 9에서 사용 가능한 최신 버전인 것으로 보이는 terminfo를 ncurses-base-6.2-10.20210508
제공했습니다 . putty-256color
최신 ncurses
terminfo(v6.4.20231202)를 사용하는 롤링 릴리스가 있으며 Putty를 사용할 때 올바르게 작동하고 크기가 조정됩니다.
내 질문은 올바른 전체 화면 크기를 얻고 checkwinsize
로그인된 모든 터미널에서 작업하는 방법입니다. 다른 설치(주로 CentOS 7/8, Debian 10/11/12 및 OpenSUSE Tumbleweed)에서는 이 특정 문제가 표시되지 않습니다. 각 사용자에 대해 행 및 열 크기를 하드코딩하는 것을 피하고 싶습니다. 도움이 필요한 경우 추가 정보를 제공할 수 있습니다.
감사해요