[vine-users:082535] Re: Vine 6.2、bc-1.06.95-1vl6の不正出力について
長南洋一
cyoichi @ maple.ocn.ne.jp
2014年 4月 9日 (水) 22:11:22 JST
長南です。
以下は憶測ですけれど。
紹介した二番目の記事にこんなことが書いてあります。
・ Your operating system’s readline library sometimes emits
a ^[[?1034h escape code to switch on 8bit character display
when initialized.
あるいは、あらいさんの
> ゴミはインタラクティブに起動させたためにターミナルに制御コードを送っ
> たように思われますし
というご意見が正しいのかもしれません。つまり、"^[[?1034h" は
i オプションを付けたために bc が出しているのかもしれない。readline
ではなく。
いづれにしろ、もう一度二番目の Web の記事を引くと、
・ One of the things needed for the problem to occur: your TERM
environment variable must be set to xterm. Either linux or
vt100 is fine ...
問題が起きる場合をもう少し厳密に言うと、環境変数 TERM が指している
端末の terminfo で smm=\E[?1034h が指定されている場合ということに
なると思います。その場合に、それが readline であれ、bc であれ、
ある条件で "^[[?1034h" を出力するのではないか。
というわけで、
> でも、Vine 6.2の端末(gnome-terminal)からVine 4.2にログインして前掲の
> スクリプトを実行するとエラーにはならないので、端末のせいだけではない
> ようには思います。
これは、スクリプト中で実行されているのが、Vine 4.2 の bc であり、
その bc は (あるいは readline は) Vine 4.2 の xterm の terminfo を
参照するからではないでしょうか。Vine 4.2 の xterm の terminfo には、
smm=\E[?1034h の指定がありません。
当方で試してみましたが、紹介した記事に出ている二つの対策は、どちらも
有効でした。つまり、環境変数 TERM を xterm 以外にしても OK でしたし
(たとえば、スクリプトの二行目に TERM=linux と書くとか)、xterm の
teminfo ファイルをテキストに落とし、smm=\E[?1034h を削除してから
(三番目の記事では rmm=\E[?1034l も削除しています) バイナリに作り
直しても、スクリプトは問題なく実行できました。
--
長南洋一
vine-users メーリングリストの案内