Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ tset(1) — NEWS-os 4.2.1R

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

csh(1)

sh(1)

stty(1)

ttys(5)

termcap(5)

environ(7)

TSET(1)  —  NEWS-OS Programmer’s Manual

名称

tset − 端末に依存した初期設定をする

形式

tset [ options ] [ −m [ident][test baudrate]:type] ... [ type ] reset [ options ] [ −m [ident][test baudrate]:type] ... [ type ]

解説

tset は、 最初に UNIX システムにログインしたときに端末をセットアップします。 これは、 erase(文字消去)文字や kill(行消去)文字の設定、 delay(遅延)のセットやリセット、 端末とシステムの文字コードの設定、 端末を適切に初期化するのに必要なあらゆるシーケンスの送信 などのような端末に依存した処理を行います。 tset は、 最初に端末が属する type を決め、 次に必要な初期設定とモード設定を行います。 各 UNIX ポートに接続する端末の type は、 /etc/ttys(5) データベースに指定されています。 端末のタイプ名は、 termcap(5) データベースの中から見つけることができます。 ポートが特定の端末と固定的に接続されない場合(端末と直結していない場合)、 dialup のように妥当な一般識別名を指定します。

引数が何も指定されない場合、 tset は単に、 環境変数 TERM から端末タイプを読み取り、 端末を再度初期設定します。 本マニュアルの以降には、 モードおよび環境の初期設定、 login 時に行われる典型的な処理、 そして、 初期設定時に端末タイプを決めたり端末モードをセットアップするのに 使用されるオプションについて述べてあります。

スタートアップスクリプト中に使用する時 (sh(1) ユーザでは .profile、 また csh(1) ユーザでは .login)、 端末をポートに直接接続しない場合、 通常使用する端末タイプの情報を与えるのが望ましいことです。 こうしたポートは、 /etc/ttys で dialup か plugboard か arpanet などのように記述されています。 このポートでどのタイプの端末を通常使用するかを指定するには、 −m (map) オプションフラグの後に、 そのポートタイプ識別名、 オプショナルなボーレート設定、 端末タイプを付けます(この結果、 ポートタイプ名は、いくつかの条件に従って端末タイプへ変更されます。 これは、 tset に「私がこのポートから入った時には、 あの種類の端末を使用していると想定してください」と伝えることです)。 2つ以上のマッピングが指定されれば、 最初に適用できるマッピングが優先されます。 ポートタイプ識別名を間違えた時には、 すべての識別名にマッチします。 termcap 中に与えられている代わりの一般名はすべて、 識別名として使用できます。

baudrate は stty(1) で指定され、 (制御端末であるべき)診断出力のスピードと比較されます。 ボーレートの test は、 >、 @、 <、 !  の組合せです。 @ は “at” の意味で、 !  はテストの意味を反転します。 メタキャラクタの問題を避けるには、 −m の引数全体を ’ 文字で囲むのが一番良い方法でしょう。 csh(1) のユーザはさらに、 ここで使用する !  の前に \ を置かなければなりません。

したがって

tset −m ´dialup>300:adm3a´ −m dialup:dw2 −m ´plugboard:?adm3a´ により端末タイプは、 使用ポートが 300 ボーより速い速さでダイアルアップをする場合、 adm3a に設定します。 ポートが(別の)ダイアルアップの場合 (すなわち 300 ボー以下)は dw2 に設定します (注 : ここに述べた例は、 テキスト処理のために、 1 行以上になりました。 実際に tset コマンドをタイプする場合、 全部を 1行に入力しなければなりません)。 tset で最終的に指定された type が疑問符で始まる場合、 ユーザは本当にそのタイプでよいかどうかを問われます。 復帰改行だけの応答はそのタイプを使用することを意味します。 これ以外の場合、 代わりに使用する別のタイプを入力できます。 したがって、 上記の場合、 プラグボードポートを使用している時、 ユーザは実際に adm3a を使用しているかどうかを問い合わされます。

マッピングが適用できなくて、 −m が前置きしてない最後の type オプションがコマンドライン上にあれば、 このタイプを使用します。 これ以外の場合は、 /etc/ttys データベースから検索したタイプが、 端末タイプに用いられます。

これは常に、 端末が直接接続されているポートの場合に限ります。 最終的に tset で決定された端末タイプと その端末の能力に関する情報をシェルの環境に返すことが普通は望ましいでしょう。 これは − オプションを使って、 Bourne shell、すなわち sh(1) においては次のようにして実現できます。

export TERM; TERM=‘tset − options...‘ また、 C shell、 csh(1) を使用している場合、

setenv TERM ‘tset − options...‘

また、 csh では、 以下のコマンドを .login ファイルに使用して、 環境変数の TERM と TERMCAP を初期設定することをお薦めします。

eval ‘tset −s options...‘

また、 これは .cshrc 中で別名を作るのにも便利です。

alias tset ’eval ‘tset −s \!∗‘’

こうしておくと、 次のコマンド

tset 2621

でいつでも端末と環境を設定することができます。

Bourne Shell ユーザへの注意 : この別名効果をシェルスクリプトで得ることはできません。 なぜならば、 シェルスクリプトが親プロセスの環境を設定できないからです (プロセスが親プロセスの環境を設定できるのなら、 こんな面倒なことは最初から必要ないはずです)。

これらのコマンドにより、 tset は、 環境中の変数 TERM に端末の名前を設定することができます。 environ(7) を参照。

一旦端末タイプが分かれば、 tset は端末ドライバのモード設定を行います。 これには通常、 端末への初期設定シーケンスの送信、 erase(文字消去)文字、および kill(行消去)文字の設定、 および特殊文字遅延の設定などがあります。 タブとニューラインの変更は、 端末初期設定シーケンスの伝送の間オフにされています。

CRT のように、 バックスペースはできるが重ね打ちができない端末上で、 erase 文字がデフォルトの消去文字(標準システムでは DEL)であるとき、 それを BACKSPACE (control-H) に変更します。

tset は端末の文字コード、システムの文字コードの設定を行います。 端末の文字コードは、 termcap(5) の中の TY で指定されているコードに設定されます。 TY が指定されていなければデフォルトの ascii に設定されます。 システムの文字コードは setlocale(3) の返す値をもとに設定されます。

オプションは以下の通りです。

−ec erase(文字消去)文字を、 すべての端末上で文字 c に設定します。 デフォルトでは、 端末上のバックスペース文字、 通常 ^H になります。 c 文字は、 直接タイプすることも、 またここで使われたハット表示を使用して 入力することもできます。

−kc −e と似ていますが、 erase(文字消去)文字ではなく kill(行消去)文字です。 c のデフォルトは ^X (単純に歴史的な理由で)です。 −k を指定しないと、kill 文字は元のままです。 ハット表示はこのオプションでも使用できます。

−ic −e と似ていますが、 erase(文字消去)文字ではなく intr(割り込み)文字です。 c のデフォルトは ^C です。 ハット表示はこのオプションでも使用できます。

− 最終的に決められた端末の名前を、 標準出力に出力します。 これはシェルで捕まえて、 環境変数 TERM に置かれます。

−s 最終的に決定した端末の名前に基づいて、 環境変数 TERM と   TERMCAP を初期設定する sh または csh の一連のコマンドを表示します。 どちらのスクリプトを出力するかは、環境変数 SHELL を参照して決められます。

−r 環境変数 TERM と 端末の文字コードを表示します。

−n NEWS-OS (Berkeley 4BSD) 端末ドライバを使用するシステムで、 この端末に対して新しい端末ドライバモードを 初期設定する必要があることを指定します。 CRT に対しては、 ボーレートが 1200 以上の場合のみ、 CRTERASE と CRTKILL モードを設定します。 詳細については tty(4) を参照してください。

−I 端末初期設定文字列の送信を抑制します。

−Q Erase set to および Kill set to のメッセージの印字を抑制します。

tset が reset として呼び出される場合、 エコーモードをセットし、 cbreak モードと raw モードをオフにして cooked モードとし、 ニューラインの置き換えをオンにして、 端末に依存した処理が行われる前に、 スペシャルキャラクタを識別できる状態に復元します。 NULL または “−1” であることがわかった スペシャルキャラクタは、 そのデフォルト値にリセットします。 tset に対するすべての引数はリセットにも使用することができます。

これは、 プログラムが端末をおかしな状態にして終了したときに、 最も役にたちます。 <CR> はこの状態では作動しないので、 作動させるためには “<LF>reset<LF>” と タイプしなければならないかも知れません。 このうちどれもエコーしないことがあります。

例

ここでは Bourne shell と − オプションの使用についてとり上げます。 csh を使用していれば、 上記のバリエーションのうち 1つを使ってください。 .profile または .login における典型的な tset には −e と −k オプションも使い、 また、 しばしば −n や −Q オプションも使うことがあります。 これらのオプションについては、 紙面の都合でここには書いてありません (注 : ここに示した例には、 テキスト処理の理由から、 1行以上に渡ったものもあります。 実際に tset コマンドをタイプするとき、 コマンド全体を 1行に入力しなければなりません)。

今、 あなたは 2621 を使っています。 これは手でタイプするのには適していますが、 常に 2621 を使うのでない限り、 .profile 用には向きません

export TERM; TERM=‘tset − 2621‘

自宅からはダイアルアップで h19 を使用しますが、 オフィスの端末は直接接続されており、 /etc/ttys が管理しています。

export TERM; TERM=‘tset − −m dialup:h19‘

何にでも接続するスイッチがあり、 あなたがログインするポートにキーをかけることをほとんど不可能にしています。 オフィスでは 9600 ボーで vt100 を使い、 家からは 2621 で、 1200 ボーでスイッチポートにダイアルアップをします。 時には別の端末を使うこともあります。 そこで、 どの端末タイプを使っているか手早く確認できるように問い合わせたいものです。 ただし 1200 ボーのとき、 あなたは常に 2621 です。 ここで注意することは、 疑問符を付けることと、 シェルの解釈から護るために疑問符 ?  と > を引用符で囲むことです。

export TERM; TERM=‘tset − −m ’switch>1200:?vt100’ −m ’switch<=1200:2621’‘

これまでの入力例はすべて、 どの条件にも合わない場合、 /etc/ttys で指定された端末タイプにフォールバックされます。 いつも電話をかけ、 同じボーレートで、 たくさんの異なった種類の端末を 使用するなら次の例が適しています。 最も一般的に使う端末は adm3a です。 これはいつも、 デフォルトを adm3a にして、 あなたがどの端末で作業をしているかを問い合わせします。

export TERM; TERM=‘tset − ?adm3a‘

ファイル /etc/ttys が適切に設定されていなくて、 ボーレートに関してキー入力したければ、 以下を使用します。

export TERM; TERM=‘tset − −m ’>1200:vt100’ 2621‘

次が、 tset の威力を説明し、 ずっと以前にこれを作った人を絶望的に困らせるという架空の例です。 あなたは 1200 ボーあるいはそれ以下で concept100 に、 時にはスイッチポートを媒体としたり定期的なダイヤル呼び出しを通じて、 電話で接続します。 1200 より速い速度でスイッチポートを通じてさまざまな端末を使用しますが、 たいていはオフィス内の vt100 端末で行います。 しかしあなたがかつて通っていた大学から、 ARPANET を通じてログインすることもあります。 この場合は、 dm2500 をエミュレートしている ALTO に使っています。 さらに、 すべてが適切に /ect/ttys に書かれている、 コンソールのようなさまざまな固定配線のポートで ログインすることもあります。 erase 文字を control-H に、 kill 文字を control-U にしたいが、 Erase set to Backspace, Kill set to Control U というメッセージ を tset に表示させないようにしたい。

export TERM; TERM=‘tset −e −k^U −Q − −m ’switch<=1200:concept100’ −m ’switch:?vt100’ −m dialup:concept100 −m arpanet:dm2500‘

関連ファイル

/etc/ttysポート名を端末タイプにマップするデータベース
/etc/termcap端末機能データベース

関連事項

csh(1), sh(1), stty(1), ttys(5), termcap(5), environ(7)

バグ

tset コマンドは、 UNIX システムを使い始めるときにユーザがマスタしなければならない 最初のコマンドの一つです。 残念なことに、これは最も複雑なことの一つです。 最大の理由は、ログインシェルの環境を設定してやるのに、 ユーザが行わなければならない余分な努力があるからです。 login(1) プログラムがうまくやってのけるか、 デフォルトシェルの代わりのようなものを作るべきか、 それとも親の環境を設定する方法があるべきか、 何とかこれを簡単にしなければなりません。

このプログラムは、 erase(文字消去)文字、 kill(行消去)文字、 intr(割り込み)文字についての 個人の選択を知ることができません。 そこでこれらの設定ローカルシステム標準に任せます。

NEWS-OSRelease 4.2.1R

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026