FreeBSD 4.8-RELEASE以前はkterm上でページャ(lessなど)やエディタ(viなど)等を起動して終了した時に、プログラムの実行時の画面が表示されていました。
しかし、FreeBSD 4.9-RELEASE以降及び5.x-RELEASEでは、kterm 上でページャ(lessなど)やエディタ(viなど)等を起動して終了した時に、画面がこれらのプログラムを実行する直前の状態に戻ってしまうように挙動が変わってしまいました。
言葉だけでは分かりにくいと思いますので、以下に例を示します。
# less /etc/rc.conf
# -- sysinstall generated deltas -- # Tue May 18 08:07:16 2004
# Created: Tue May 18 08:07:16 2004
# Enable network daemons for user convenience.
# Please make all changes to this file, not to /etc/defaults/rc.conf.
# This file now contains just the overrides from /etc/defaults/rc.conf.
〜〜〜〜
linux_enable="YES"
のようにしてlessでファイルを開いて終了させたときに、4.8-RELEASE以前では
# Please make all changes to this file, not to /etc/defaults/rc.conf.
# This file now contains just the overrides from /etc/defaults/rc.conf.
〜〜〜〜
linux_enable="YES"
# (入力可能)
のようにlessの実行画面が残ります。
これが4.9-RELEASE、あるいは5.x-RELEASEですと、
# less /etc/rc.conf
# (入力可能)
のようにlessの実行画面が残らずリフレッシュされるのです。
私の場合、実行画面を見ながらコマンドを打ったりすることもしばしばあるので、はっきり言って非常に不便になってしまいました。
ただしこの現象はコンソール上(非X環境)や、konやSSH上(VT100)では起こらないためxtermあるいはktermのtermcapに問題がありそうです。
ちょっと調べてみたところ、解決方法が分かりましたので記したいと思います。
この挙動の原因は、termcapのktermエントリにて「:tc=」の示す先がxtermからxterm-r6に変更されて、ti/te ケーパビリティが有効になったためです。
4.8-RELEASE以前のようにプログラムの終了時の画面が残るようにするには、「:tc」の前に「:ti@:te@」を入れてあげれば良いようです。
termcapを開いて該当箇所を変更しましょう。
# vi /usr/share/misc/termcap
kterm|kterm kanji terminal emulator (X window system):\
:hs:es:ts=\E[?E\E[?%i%dT:fs=\E[?F:ds=\E[?H:\
:KJ:sc=\E7:rc=\E8:cs=\E[%i%d;%dr:TY=ascii:\
:eA@:as=\E(0:ae=\E(B:tc=xterm-r6:
の一番最後の「:tc」の部分を以下のように書き換えます。
# vi /usr/share/misc/termcap
kterm|kterm kanji terminal emulator (X window system):\
:hs:es:ts=\E[?E\E[?%i%dT:fs=\E[?F:ds=\E[?H:\
:KJ:sc=\E7:rc=\E8:cs=\E[%i%d;%dr:TY=ascii:\
:eA@:as=\E(0:ae=\E(B:ti@:te@:tc=xterm-r6:
変更できたらcap_mkdbコマンドを使ってtermcap.dbを作成します。
# cap_mkdb /usr/share/misc/termcap
再ログインすれば、lessを終了させたときにプログラムの終了時の画面が表示される挙動に戻ると思います。