環境変数 TERM は通常、 あなたが使用中の端末・コンソール・ディスプレイデバイスの いずれかのタイプ名を含むはずです。 この情報は、エディタやメーラを含む、画面指向プログラムには非常に重要です。
デフォルトの TERM の値は、 /etc/inittab (Linux や System V 系の UNIX) または /etc/ttys (BSD UNIX) を使って、各回線毎に設定されます。 ワークステーションやマイクロコンピュータについては、 ほとんどの場合これで十分です。
ダイヤルアップ回線を使用する場合には、 回線に接続されるデバイスのタイプには色々なものがありえます。 古めの UNIX システムでは、ダイヤルアップ回線に `dumb' や `dialup' というような正にダム端末タイプをあらかじめ設定します。 新しめの UNIX システムでは、 DEC VT100 互換の端末やパーソナルコンピュータでのエミュレータの普及を反映して、 `vt100' に設定するかもしれません。
近年の telnet は、ローカル側の TERM 環境変数をリモート側に渡します。 あなたの端末タイプについて、 リモートの terminfo エントリや termcap エントリの互換性が無い場合は 問題が発生し得ますが、このような状況は稀であり、 明示的に `vt100' をエクスポートすることによりほぼ常に問題が避けられるでしょう (実際に VT100 上位互換のコンソール・端末・端末エミュレータを 使用していることを仮定しています)。
どのような場合でも、シェルプロファイルを使用することにより、 システムの TERM 設定を無視して好きなように設定することができます。 tset(1) ユーティリティが助けとなることもあります。 該当する tty デバイスとボーレートを基にして 端末タイプを推定したり要求したりするためのルールセットを このコマンドへ与えることができます。
回線に対するシステムのデフォルトタイプを無視したくなるような、 (可視ベルや反転のような) オプションを組み込んだ カスタムエントリを持っている場合には、 独自の TERM の値を設定するというのもよいでしょう。
端末タイプの記述は、 /usr/share/misc/terminfo の下に、ケーパビリティデータのファイルとして格納されています。 システムが認識する全端末名を閲覧するには、シェルから
toe | more
としてください。 これらのケーパビリティファイルは、 取り出し速度の向上のために (置き換えられた、古いテキストベースの termcap とは異なって) バイナリフォーマットとなっています。 エントリを調べるには、infocmp(1) コマンドを使う必要があります。 これは次のように起動します:
infocmp entry-name
ここで entry-name は調べようとするタイプの名称です (そしてこれはケーパビリティファイルの名称であり、 名前の先頭の文字の名前を持った /usr/share/misc/terminfo のサブディレクトリにあります)。 このコマンドは、terminfo(5) に記述されている書式で、 ケーパビリティファイルをダンプします。
terminfo(5) 記述の最初の行は、 terminfo が端末を認識するために使用する名称を与えます。 名称は `|' (パイプバー) 文字で区切られ、 最後の名称フィールドはコンマで終ります。 最初の名称フィールドは、このタイプの第一名称 であり、 TERM 設定時に使用するものです。 最後の名称フィールドは (最初のものと違う場合は)、 端末タイプの本当の記述です (これは空白を含めることができます。他の名称は単一語であることが必要です)。 最初と最後のものの間にある名称フィールドは (もしあれば)、 端末の別名であり、通常は、互換性のために保持されている歴史的な名前です。
端末の第一名称の選択には、 第一名称を情報があって固有なものにするのに役立つような約束事があります。 以下に、端末命名のための段階的なガイドを示し、 また、端末名称をどのように解釈するのかも示します:
最初に、ルート名称を選びます。 ルート名称は、 1 個の小文字に、 最大 7 文字までの小文字または数字が続きます。 区切り文字はルート名称に使うことを避けなければなりません。 なぜなら、これらはファイル名として使われたり解釈されるからです。 また、シェルのメタ文字 (!, $, *, ? 等) がそれらに含まれると、 奇妙で分り難い挙動を引き起こすかもしれないからです。 スラッシュ (/) や、ファイルシステムが解釈する可能性のある他の文字 (\, $, [, ]) は特に危険です (terminfo はプラットフォームに依存しません。 特殊文字を含む名前を選ぶと、 将来移植されたシステム上のユーザが苦労することになるかもしれません)。 ドット (.) 文字は、ルート名称に 1 個までである限りは、比較的安全です。 歴史的な terminfo 名称には、ドットを使用しているものがあります。
ほぼ常に、端末やワークステーションコンソールタイプのルート名称は、 ベンダの接頭辞 (Hewlett-Packard では hp、 Wyse では wy、AT&T 端末では att 等) が付くか、 端末回線の共通名称 (DEC の VT シリーズ端末では vt、 Sun Microsystems のワークステーションコンソールでは sun、 ADDS Regent シリーズでは regent) であるべきです。 terminfo ツリーを列挙すれば、 どの接頭辞が既に一般的に使用されているかが分かります。 ルート名称の接頭辞には、適切な場合にはモデル番号が続き、 vt100, hp2621, wy50 となります。
PC-Unix コンソールタイプのルート名称は、OS 名称、 すなわち linux, bsdos, freebsd, netbsd であるべきです。 決して console やその他の総称的なものであってはなりません。 なぜなら、マルチプラットフォーム環境では混乱の原因となるからです! モデル番号が続く場合、 OS のリリースレベルかコンソールドライバのリリースレベルを示すべきです。
端末エミュレータ (ANSI 標準か vt100 タイプのどれにも適合していないとみなされる場合には) のルート名称は、 プログラム名称か、容易に認識可能な省略名称であるべきです (すなわち versaterm, ctrm)。
ルート名称に続き、 ハイフンで区切った適当な数の機能を表す接尾辞を追加することが可能です。
伝統的には、端末タイプが行数を指定することを目的とした変形タイプである場合、 行数のサフィックスを先に書きます。 例えば FuBarCo モデル 2317 端末の 30 行モードの反転ビデオ用では、 最適な書式は fubar-30-rv となります (`fubar-rv-30' ではありません)。
スタンドアロンエントリとしてではなく、 use ケーパビリティを使用して他のエントリに挿入される部品として 書かれた端末タイプは、 ダッシュの代わりにプラス記号が埋め込まれて区別されます。
表示制御に端末タイプを使用するコマンドは、 しばしば、端末名引数を取る -T オプションを受け付けます。 このようなプログラムでは、-T オプションを指定しないときは、 TERM 環境変数を使用するべきです。