TSET(1)

名称
tset - 端末を初期化する

書式
tset [-IQrSs] [-] [-e ch] [-i ch] [-k ch] [-m mapping] [terminal]
reset [-IQrSs] [-] [-e ch] [-i ch] [-k ch] [-m mapping] [terminal]

解説
tset は端末を初期化します。まず最初に tset は使用中の端末タイプを判別 します。判別方法は、以下の値を順番に調べ、最初に見つかった端末タイプを 利用するという方法です。

•   コマンドライン上で指定した terminal 引数
•   環境変数 TERM の値
•   利用中の標準エラー出力デバイスに対応する、 /etc/ttys 内のエントリで定義している端末タイプ
•   デフォルトの端末タイプである ``unknown''

端末タイプがコマンドラインで指定されない時は、 -m オプションのマッピングはその後に適用されます (詳細は下を参照)。 その後、もし端末タイプの前に ``?'' がついていたならば、端末タイプの確認用のプロンプトが出ます。空行を 与えるとその端末タイプになりますが、別の新しい端末タイプを入力することも 可能です。いったん端末タイプが決定すれば、その端末用の termcap エントリが 検索されます。termcap エントリが見つからない場合は、もう一度プロンプトが 出ます。

いったん termcap エントリが見つかれば、(他にもたくさんある中で) 画面サイズ、バックスペース、インタラプト、行消去のキャラクタがセットされ、 端末の初期化およびタブの初期化の文字列が標準エラー出力に送られます。 最後に、もし、消去、インタラプト、行削除のキャラクタが変更される、もしくは そのデフォルト値が未設定であれば、その値が標準エラー出力に表示されます。

tset が reset として起動された時は、上で述べた端末初期化が行なわ れる前に、端末を cooked モード、echo モードにセットし、cbreak モード、 raw モードをオフにし、newline 変換を有効にし、 未設定の特殊キャラクタをデフォルト値でリセットします。 これは、プログラムが端末を異常な状態にしたまま死んだ時に有用です。 端末が異常な状態にあるときにはキャリッジリターンが働かないことがあるので、 端末を正常に戻すためには “<LF>reset<LF>” (ラインフィードキャラクタは通常 コントロール-J です) とタイプしなければいけないかもしれないということに 注意して下さい。また、端末がコマンドのエコーを行なわなくなっているかも しれません。

オプションは以下のものがあります:

-   端末タイプが標準出力に表示されます。端末は初期化されません。

-e  erase キャラクタを ch にします。

-I  端末初期化文字列もしくはタブ初期化文字列を端末に送りません。

-i  インタラプトキャラクタを ch にします。

-k  行削除のキャラクタを ch にします。

-m  ポートタイプから端末へのマッピングを指定します。詳細は下を参照して下さい。

-Q  消去、インタラプト、行削除の値を表示しません。

-r  端末タイプを標準エラー出力に表示します。

-S  端末タイプと termcap エントリを標準出力に表示します。 環境設定についての詳細は以下のセクションを参照して下さい。

-s  環境変数 TERM と TERMCAP を初期化する shell コマンド列を標準出力に書きます。 環境変数の設定についての詳細は以下のセクションを参照して下さい。

-e, -i, -k オプションの引数は、実際のキャラクタを 書くか、もしくは “ハット記号” を使って (すなわち コントロール-h なら “^H” もしくは “^h” ) 記述して下さい。

環境設定
しばしば、端末タイプと端末の能力についての情報を shell の環境変数に設定する 必要がでてきます。これは -S と -s のオプションで行ないます。 -S オプションが指定された時、端末タイプと termcap エントリが 標準出力に表示されます。この出力はスペースで区切られており、最後に 改行がつきません。また、この出力は csh, ksh やその他の shell の配列に 代入できます。

-s オプションが指定された場合は shell の環境変数を設定するための コマンドが標準出力に書かれます。このコマンドは、環境変数 SHELL の設定値が ``csh'' で終っていれば csh 用の、それ以外は sh 用のものとなります。 csh 用のコマンドの場合は “noglob” シェル変数の set と unset が行なわれ、 unset したままになることに注意して下さい。以下の行を .login や .profile に記述すれば環境変数を正しく初期化できます:

    eval `tset -s options ... `

-S オプションの使い方を簡単に説明すると、 .login に以下のような記述をすると上と同じような効果が得られます:

    set noglob
    set term=(`tset -S options ...`)
    setenv TERM $term[1]
    setenv TERMCAP "$term[2]"
    unset term
    unset noglob

端末タイプへのマッピング
端末がシステムに組み込まれていない場合 (或は現在のシス テム情報が正しくない場合) /etc/ttys ファイル 或は TERM 環境変数から得た端末タイプは “network”, “dialup”, “unknown” のような generic になることがあります。 tset がスタートアップスクリプト ( sh(1) を使う場合は .profile 、 csh(1) を使う場合は .login ) で使われる場合は、しばしば、そのようなポートで使われる端末のタイプ の情報を提供する必要があります。 -m オプションの目的は、端末タイプの状態リストから “map” すること、すなわち tset に ``もしこのポートがある特定のスピードであるならば、ある種の端末であることを 推定しなさい''という情報を伝えることです。

-m オプションの引数は、ポートタイプ、オペレータ、ボーレート、コロン(``:'') と端末タイプからなります。 ポートタイプは (オペレータ或はコロン文字によって区切られた) 文字列で表し ます。オペレータは、 “>”, “<”, “@”, “”! の組合せになります。 “>” は「より大きい」を意味し、 “<” は「より小さい」を意味し、 “@” は「等しい」を意味し、 そして “”! は「 test の評価結果の反対」を意味します。 ボーレートは数値として表され、 (コントロール端末である べき) 標準エラー出力のスピードと比較されます。 端末タイプは文字列です。

もし端末タイプがコマンドラインで示されなければ、 -m マッピングが端末タイプに適用されます。 もしポートタイプとボーレートがマッピングと一致すると、マッピングで示された端 末タイプでカレントタイプを置き換えます。もし、一つ以上のマッピングが示さ れた場合には、最初に適合したマッピングを使います。

例えば、 “dialup>9600:vt100” というマッピングを考えます。 ポートタイプは “dialup” 、オペレータは “>” 、ボーレートは “9600” 、そして端末タイプは “vt100” です。 このマッピングの結果、ターミナルタイプが “dialup” で、ボーレートが 9600 ボーより大きければ、端末タイプ “vt100” が使われます。

ポートタイプがない場合は、端末タイプは任意のポートタイプに一致します。 例えば、 “-m dialup:vt100 -m :?xterm” では、任意のダイアルアップポートにおいて、 ボーレートを無視してターミナルタイプを “vt100” に一致させます。そして、ダイアルアップ以外のポートをターミナルタイプ “?xterm” に一致させます。 ?xterm はクエスチョンマークが先頭に付いているので、実際に xterm ターミナルを使っているかどうかについてデフォルトポートで 確認を求められことに注意して下さい。

-m オプションでの引数に空白は許されません。 メタキャラクタの問題を避けるために、 -m オプションの引数全体はシングルコーテーションで囲むこと、そして csh を使っている場合は、すべてのイクスクラメーションマーク (``!'') の前に バックスラッシュ (``\'') をいれることを推奨します。

環境変数
tset コマンドは、環境変数 SHELL および TERM を利用します。

関連ファイル
/etc/ttys
    システムポート名から端末タイプへのマッピングを記述したデータベース
/usr/share/misc/termcap
    termcap データベース

関連項目
csh(1), sh(1), stty(1), tty(4), termcap(5), ttys(5), environ(7)

歴史
tset は 3.0BSD から現れました。

互換性
-A, -E, -h, -u, -v オプションは tset ユーティリティから削除されました。 これらは 4.3BSD のドキュメントにはなく、限られた用途しかありません。 -a, -d, -p オプションも同様に、ドキュメントにないか有用ではありませんが、 広く使われるので残されています。これら3つのオプショ ンの代わりに、 -m オプションを使うことが強く推奨されています。 -n オプションは残っていますが、無効です。 -e, -i, -k オプションは引数なしに使うことがまだ許されていますが、 このような使用法は、 文字を明示的に指定するよう修正されることが 強く推奨されています。

reset として tset を実行する場合には、 -Q オプションは使いません。 tset の幾つかの歴史的な実装上での - オプションと 引数 terminal の間の干渉は排除されています。

最後に, tset の実装は ( p1003.1-88 に従うシステムへの追加の一部として ) 完全にやり直されました。 もはや古い端末インターフェースのシステムの上では コンパイルはされないでしょう。