Debianを11から12にアップグレードしたところ、moreコマンドのデフォルトの挙動が変化しました。
具体的には、表示するテキストの行が画面の行数よりも短いときは、単にcatで出力される状態であったのに、画面をクリアして画面の上部に表示されるようになりました。 lessでいうと、less -Fの挙動をしていたものが、less -cに似た挙動に変更されてしまいました。しかも、元の画面を削除して復旧しないという挙動です。 less -Fが手間なのでmoreを使っていたのに、これは困ったことになってしまいました。 PerplexityによるとLinuxのmoreコマンドの動作変更は、util-linux パッケージのバージョン2.38で導入されました。この変更により、表示する内容が端末の画面高さよりも少ない行数の場合でも、画面の上部から表示されるようになりました。 この変更は、より一貫性のある動作を提供し、ユーザーエクスペリエンスを向上させることを目的としています。以前のバージョンでは、内容が短い場合に画面の下部に表示されることがあり、これが一部のユーザーにとって混乱を招く原因となっていました。 util-linux 2.38は2022年4月にリリースされており、この版で上記の動作変更が実装されました。したがって、util-linux 2.37.2と2.38.1の間で発生したこの変更は、正確には2.38で導入されたものです。とのこと。 moreコマンドが含まれているlinux-utilのバージョンは、Debian 11では2.36.1、Debian 12では2.38.1です。また、Ubuntu 22.04のmoreはDebian 11と挙動が同じで、そのバージョンは2.37.2です。 そこで、linux-utilのログを調べてみると、
2021-06-01 build-sys: release++ (v2.37)v2.37 2022-01-31 build-sys: release++ (v2.38-rc1)v2.38-rc1 2022-03-28 build-sys: release++ (v2.38)v2.38でした。これらの間のどこかに変更が含まれているはずです。 調べてみると
commit df6b29d3b8e9a55d2bfa69c593e17da4d11a3fac AuthorDate: Wed Sep 29 14:50:14 2021 +0200 CommitDate: Wed Sep 29 14:50:14 2021 +0200 more: POSIX compliance patch preventing exit on EOF without -eで-eオプションが導入されて、デフォルトの挙動が変わっていました。とても煩わしいです。 さらにその後のコミットをたどっていくと、なんと、
commit 28b391ce7e58f8327c092b3911c05f526d0ad586 AuthorDate: Wed Jun 15 10:03:44 2022 +0200 CommitDate: Wed Jun 15 10:03:44 2022 +0200 more: restore exit-on-eof if POSIXLY_CORRECT is not set In version 2.38, exit-on-eof has been disabled by default. This change is annoying for users and forces many users to use 'alias more="more -e"'. It seems better to force POSIX lovers to use POSIXLY_CORRECT env. variable and stay backwardly compatible by default. Addresses: https://github.com/util-linux/util-linux/issues/1703 Addresses: https://bugzilla.redhat.com/show_bug.cgi?id=2088493がコミットされていて、POSIXでないとやだ!っていう人は環境変数POSIXLY_CORRECTを使いなさいという形に戻っていました。 Debian 12のパッケージ更新タイミングの運のなさよ。とりあえず、alias more="more -e"で回避するしか無さそうです。
0 件のコメント :
コメントを投稿