GETTYTAB(5) | FreeBSD File Formats Manual | GETTYTAB(5) |
名称
gettytab — 端末設定データベース書式
gettytab |
解説
gettytab ファイルは、 termcap(5) データベースを単純化したバージョンで、端末回線を記述するのに用いられます。冒頭に起動される端末ログインプロセス getty(8) は、起動されるたびに gettytab ファイルにアクセスするので、比較的簡単に端末の特性を再設定することができます。データベースの各エントリは、それぞれ1個の端末クラスを記述するのに用いられます。デフォルトの端末クラス default が存在し、他の全てのクラスに対するグローバルなデフォルト値を記述するのに用いられます。 (言い替えれば、まず、 default エントリを読み込み、その後で、必要なクラスのエントリを読み込み、デフォルトの設定をクラス固有の設定で上書きします。)
ケーパビリティ
ファイルレイアウトの解説については、 termcap(5) を参照して下さい。以下の デフォルト 欄は、使用する端末用のテーブルに値がなく、特別の default テーブルにも値がない場合に用いられる値です。名称 | 型 | デフォルト | 解説 |
ac | 文字列 | unused | モデム応答のための想定文字列-応答チャットスクリプト |
al | 文字列 | unused | プロンプトを出さずに自動ログインするユーザ |
ap | bool | 偽 | 端末はどのパリティでも受け付ける |
bk | 文字列 | 0377 | 代用の行末文字 (入力ブレーク) |
c0 | 数値 | unused | メッセージ書き込みのための tty 制御フラグ群 |
c1 | 数値 | unused | ログイン名読み込みのための tty 制御フラグ群 |
c2 | 数値 | unused | 端末を去るときの制御フラグ群 |
ce | bool | 偽 | crt 文字消去アルゴリズムを用いる |
ck | bool | 偽 | crt 行削除アルゴリズムを用いる |
cl | 文字列 | NULL | 画面削除シーケンス |
co | bool | 偽 | コンソール - ‘ \n ’をログインプロンプトの後に追加する |
ct | 数値 | 10 | ac と ic のスクリプトのためのチャットタイムアウト |
dc | 数値 | 0 | チャットデバッグ用ビットマスク |
de | 数値 | 0 | この秒数だけ待って、最初のプロンプトを書く前に入力をフラッシュする |
df | 文字列 | %+ | バナーメッセージ中の %d で使用する strftime(3) 書式 |
ds | 文字列 | ‘ ^Y ’ |
遅延されたサスペンド文字 |
dx | bool | 偽 | DECCTLQ をセットする |
ec | bool | 偽 | echo を残す OFF |
ep | bool | 偽 | 端末は偶数パリティを用いる |
er | 文字列 | ‘ ^? ’ |
消去文字 |
et | 文字列 | ‘ ^D ’ |
テキストの終り ( EOF) 文字 |
ev | 文字列 | NULL | 環境変数の初期設定 |
f0 | 数値 | unused | メッセージ書き込みのための tty モードフラグ群 |
f1 | 数値 | unused | ログイン名読み込みのための tty モードフラグ群 |
f2 | 数値 | unused | 端末を去るときの tty モードフラグ群 |
fl | 文字列 | ‘ ^O ’ |
出力フラッシュ文字 |
hc | bool | 偽 | 最後のクローズのときに回線をハングアップ させない |
he | 文字列 | NULL | ホスト名編集文字列 |
hn | 文字列 | hostname | ホスト名 |
ht | bool | 偽 | 端末に本物のタブが実装されている |
hw | bool | 偽 | cts/rts によるハードウェアフロー制御を行う |
i0 | 数値 | unused | メッセージ書き込みのための tty 入力フラグ群 |
i1 | 数値 | unused | ログイン名読み込みのための tty 入力フラグ群 |
i2 | 数値 | unused | 端末を去るときの tty 入力フラグ群 |
ic | 文字列 | unused | モデム初期化のための、想定入力-出力チャットスクリプト |
if | 文字列 | unused | プロンプトの前に、/etc/issue のように名前で指定したファイルを表示する |
ig | bool | 偽 | ログイン名に含まれるガベージ文字を無視する |
im | 文字列 | NULL | 冒頭の (バナー) メッセージ |
in | 文字列 | ‘ ^C ’ |
割り込み文字 |
is | 数値 | unused | 入力スピード |
kl | 文字列 | ‘ ^U ’ |
行消去文字 |
l0 | 数値 | unused | メッセージ書き込みのための tty ローカルフラグ群 |
l1 | 数値 | unused | ログイン名読み込みのための tty ローカルフラグ群 |
l2 | 数値 | unused | 端末を去るときの tty ローカルフラグ群 |
lm | 文字列 | login: | ログインプロンプト |
ln | 文字列 | ‘ ^V ’ |
次の文字がリテラル値であることを示す文字 |
lo | 文字列 | /usr/bin/login | 名前を得たときに実行するプログラム |
mb | bool | 偽 | キャリアに基づいたフロー制御を行う |
nc | bool | 偽 | 端末はキャリアをサポートしない (clocal をセット) |
nl | bool | 偽 | 端末には改行文字がある (あるいは、あるはずである) |
np | bool | 偽 | 端末はパリティを用いない (つまり 8 ビット文字) |
nx | 文字列 | default | (速度の自動選択のための) 次のテーブル |
o0 | 数値 | unused | メッセージ書き込みのための tty 出力フラグ群 |
o1 | 数値 | unused | ログイン名読み込みのための tty 出力フラグ群 |
o2 | 数値 | unused | 端末を去るときの tty 出力フラグ群 |
op | bool | 偽 | 端末は奇数パリティを用いる |
os | 数値 | unused | 出力スピード |
pc | 文字列 | ‘ \0 ’ |
パッド文字 |
pe | bool | 偽 | プリンタの (ハードコピー) 文字消去アルゴリズムを用いる |
pf | 数値 | 0 | 最初のプロンプトと引き続くフラッシュの間の遅延 (秒数) |
pl | bool | 偽 | PPP シーケンスを検出せず、 pp で示される PPP ログインプログラムを自動的に開始する |
pp | 文字列 | unused | PPP 認証プログラム |
ps | bool | 偽 | 回線は MICOM ポートセレクタに接続されている |
qu | 文字列 | ‘ ^\ ’ |
終了文字 |
rp | 文字列 | ‘ ^R ’ |
行の再タイプ文字 |
rt | 数値 | unused | ac 使用時の ring タイムアウト |
rw | bool | 偽 | 入力に raw モードを 用いずに 、cbreak を用いる |
sp | 数値 | unused | (入力および出力の) 回線速度 |
su | 文字列 | ‘ ^Z ’ |
サスペンド文字 |
tc | 文字列 | none | テーブルの続き |
to | 数値 | 0 | タイムアウト (秒数) |
tt | 文字列 | NULL | 端末の型 (環境変数用) |
ub | bool | 偽 | (プロンプトなどの) バッファリングしない出力を行う |
we | 文字列 | ‘ ^W ’ |
単語消去文字 |
xc | bool | 偽 | 制御文字を‘ ^X ’の形で出力 しない |
xf | 文字列 | ‘ ^S ’ |
XOFF (出力ストップ) 文字 |
xn | 文字列 | ‘ ^Q ’ |
XON (出力開始) 文字 |
Lo | 文字列 | C | バナーメッセージでの %d のために用いるロケール |
以下のケーパビリティは、もはや getty(8) によってサポートされていません。
bd | 数値 | 0 | バックスペースでの遅延 |
cb | bool | 偽 | crt バックスペースモードを用いる |
cd | 数値 | 0 | 復帰 (carriage return) での遅延 |
fd | 数値 | 0 | フォームフィード (垂直移動) での遅延 |
lc | bool | 偽 | 端末では小文字が使える |
nd | 数値 | 0 | 改行 (ラインフィード) での遅延 |
uc | bool | 偽 | 端末では大文字しか使えない |
回線速度が指定されていない場合、getty が起動された時に設定されている速度は、変更されません。入力速度または出力速度を指定したときは、指定した方向の回線速度のみが上書き更新されます。
メッセージの出力時、ログイン名の入力時、 getty が処理を済ませて端末を手放す時に用いる端末モードの値は、ブール型フラグの指定に基づいて決定されます。もしこの決定が適切でないことが分かった場合、これら 3 つのどれか (あるいはすべて) の値は、数値指定 c0, c1, c2, i0, i1, i2, l0, l1, l2, o0, o1, o2 のいずれかで上書きされます。これらの数値指定では、フラグの値 (通常は、0 を頭につけた 8 進数) そのものを指定することができます。これらのフラグは、termio の c_cflag, c_iflag, c_lflag および c_oflag の各フィールドにそれぞれ対応します。それらのセットの各々は、完全に指定しなければ有効になりません。 f0, f1 および f2 は、TTY サブシステムの旧版の実装に対する後方互換性を意図した物です。これらのフラグには、sgttyb の sg_flags フィールドの (32 ビット) 値の下位 16 ビットが含まれます。また、上位 16 ビットは、ローカルモードを収めるワードを表します。
もし getty(8) がヌル文字 (回線ブレークを示すものと見なされます) を受け取った場合、プログラムは、 nx エントリに示されたテーブルを用いて再始動します。もしこのエントリがなければ、今まで用いていたテーブルを再び用います。
遅延は、ミリ秒単位で指定し、tty ドライバが使用可能な遅延のうち最も近いものが用いられます。より大きな確実性が必要な場合は、0 から 1, 2, 3 までの値の遅延は、ドライバの特別な遅延アルゴリズムから選択するものと解釈されます。
cl 画面消去文字列には、その前に必要な遅延時間をミリ秒単位の (10 進数) 数値で (termcap 風に) 書くことができます。この遅延は、パディング文字 pc を繰り返して用いることによりシミュレートされます。
初期化メッセージ im ログインメッセージ lm および初期化ファイル if は、以下の文字の並びをどれでも含めることができます。これらは、 getty(8) が実行されている環境から得た情報に展開されます。
- %d
- 現在の日付と時間を、 Lo と df に従って整形したもの。
- %h
- マシンのホスト名。通常は、 gethostname(3) によってシステムから得ますが、テーブルの hn エントリで指定して、この値を書き換えることができます。どちらの場合でも、これは、 he 文字列を用いて編集することができます。 he 文字列の中にある 1 個の '@' は、実際のホスト名から最終的なホスト名に 1 文字のコピーを引き起こします。 he 文字列中の '#' は、実際のホスト名の次の1文字をスキップさせます。 '@' でも '#' でもない各文字は、最終的なホスト名にコピーされます。余分な '@' と '#' は、無視されます。
- %t
- tty の名前。
- %m, %r, %s, %v
- それぞれ、 uname(3) が返すマシンの型、オペレーティングシステムのリリース、オペレーティングシステムの名前、そしてカーネルのバージョンです。
- %%
- 1 個の“%”文字。
getty がログインプロセス (通常は、“ /usr/bin/login”ですが、 lo 文字列で指定されていればそれ) を実行するとき、このプロセスの環境には、 tt 文字列 (が存在すれば) で指定した端末の型が設定されます。 ev 文字列は、プロセスの環境にデータを追加するために使用することができます。これは、コンマで区切られた文字列からなり、それぞれは、 name=value
という形式になっていると仮定されます。
もしタイムアウトとして、 to に 0 以外の値を指定した場合、指定された秒数経過した後に終了します。すなわち、getty は、ログイン名を受け取って制御を login(1) に渡すか、または alarm シグナルを受け取って終了します。これは、ダイヤルイン回線をハングアップするために有用です。
getty(8) からの出力は、 op か np が指定された場合を除いて、偶数パリティを用います。 op 文字列と ap を一緒に指定すると、入力としては、パリティが何であっても許可し、出力としては、奇数パリティを生成します。注意: これは、getty が実行されているときのみ適用され、端末ドライバの制限によりここまで完全な実装ができないかもしれません。 getty(8) ユーティリティは、 RAW モードのときは、入力文字のパリティ検査を行いません。
もし pp 文字列が指定されていて、PPP リンク確立シーケンスが認識されると、 getty は、 pp オプションで指定されているプログラムを起動します。これは、PPP 着信を取り扱うために用いることができます。 pl も真の場合、 getty(8) は、ユーザ名プロンプトと PPP 検出フェーズをスキップし、 pp で指定されたプログラムを即時に起動します。
getty は、以下の 2 つのケーパビリティを用いて利用できるチャットスクリプト機能を提供します。これによって、基本的なインテリジェントモデムをある程度取り扱えるようにします。
- ic
- モデムを初期化するチャットスクリプト。
- ac
- コールに答えるチャットスクリプト。
チャットスクリプトは、受信を想定した文字列/送信する文字列の対の連なりからなります。チャット文字列が始まるとき、 getty は、最初の文字列を待ち、その文字列を見つけたら 2 番目の文字列を送ります。以後も同様に処理を進めます。指定された文字列は、1 個以上のタブあるいはスペースで区切られています。文字列には、標準 ASCII 文字と、特別な「エスケープ」を含めることができます。エスケープは、バックスラッシュに続き 1 文字以上の文字が続いたもので、それは、以下のように解釈されます。
- \a
- ベル文字。
- \b
- バックスペース。
- \n
- 改行。
- \e
- エスケープ。
- \f
- フォームフィード。
- \p
- 0.5秒の一時停止。
- \r
- 復帰文字。
- \S, \s
- 空白文字。
- \t
- タブ。
- \xNN
- 16 進数のバイト値。
- \0NNN
- 8 進数のバイト値。
‘ \p
’文字列は、送信文字列でのみ有効で、前の文字と次の文字を送る間に 0.5 秒の一時停止を発生することに注意のこと。 16 進数値は、最大で 16 進数 2 桁で、8 進数値は、最大で 8 進数 3 桁です。
ic チャットシーケンスは、モデムやそれに類似したデバイスを初期化するのに用いられます。ヘイズ互換のコマンドセットを持つモデム用の初期化チャットスクリプトの典型例は、以下のようなものでしょう。
:ic="" ATE0Q0V1\r OK\r ATS0=0\r OK\r:
このスクリプトは、何も待たず (つまり常に成功し)、モデムが正しいモード (コマンドエコーを抑制し、応答を返す際に冗長モードで返す) に確実になるようなシーケンスを送り、それから自動応答を切ります。終了する前に、"OK"という反応を待ちます。この初期化シーケンスは、モデムの応答をチェックしてモデムが正しく機能しているかを確かめるために用いられます。初期化スクリプトが完了するのに失敗した場合、 getty は、これを致命的な状態であると見なし、その結果として、 syslogd(8) を用いてログを残してから終了します。
同様に、アンサーチャットスクリプトは、 (通常) "RING"に対して手動で電話に応答するために用いることができます。アンサースクリプトを指定して起動した場合、 getty ユーティリティは、ポートをノンブロッキングモードでオープンし、それ以前の余分な入力をすべて消去し、ポートへのデータを待ちます。何らかのデータが取得可能になるとすぐ、アンサーチャットスクリプトが開始し、文字列がスキャンされ、アンサーチャットスクリプトに従って応答します。ヘイズ互換のモデムでは、スクリプトは、通常以下のような感じのものになるでしょう。
:ac=RING\r ATA\r CONNECT:
これは、"ATA"コマンドによってモデムに応答させ、続いて入力をスキャンして文字列 "CONNECT"を探します。もし ct タイムアウトが生じる前にこの文字列を受け取った場合、通常のログインシーケンスが開始されます。
ct ケーパビリティは、すべての送信文字列および想定される入力文字列に適用されるタイムアウトの値を指定します。このタイムアウトは、文字列待ちを行うごと、および文字列送信を行うごとに設定されます。少なくともリモートとローカルのモデムの間のコネクションが確立されるのにかかる時間 (通常およそ 10 秒) だけの長さは必要です。
ほとんどの情況で、コネクションが検出された後に追加の入力のすべてをフラッシュしたいと思うものですが、この目的には、 de ケーパビリティを使うことができます。これは、コネクションが確立された後で短時間の遅延をかけ、その間に接続データがすべてモデムによって送られてしまうのと同じ効果を持ちます。
歴史
gettytab ファイルフォーマットは、 4.2BSD で登場しました。バグ
特殊文字 (文字消去、行削除など) は、 login(1) によってシステムのデフォルトに再設定されてしまいます。 常に、 ログイン名としてタイプした '#' あるいは '^H' は、1 文字消去として扱われ、'@' は、行消去として扱われます。遅延機能は、実クロックです。全般的に柔軟性がないという問題はさておき、遅延アルゴリズムのいくつかは、実装されていません。端末ドライバが正常な遅延の設定をサポートしている必要があります。
he ケーパビリティは、全く知的ではありません。
忌まわしい termcap(5) フォーマットより、もっと合理的なものを選ぶべきでした。
April 19, 1994 | FreeBSD |