クライアントプログラム (例としてグラフィックアプリケーション) は
DISPLAY
環境変数を調べて接続するディスプレイを知ります。しかし、
クライアント起動時のコマンドライン引数に -display hostname:0
を与えた場合は、
この設定を優先します。いくつかの例で明らかにしましょう。
私たちのコンピュータは外部からホスト名 light として見えており、
ドメイン uni.verse に所属しているとします。
普通に X サーバを実行しているなら、ディスプレイは
light.uni.verse:0
として識別されます。
dark.matt.er
というリモートコンピュータで描画プログラムの xfig を実行し、
ローカルマシン light に xfig の出力を表示させたいと思います。
すでにリモートコンピュータ dark.matt.er
に telnet していると想定します。
リモートコンピュータで csh を使っているなら
dark% setenv DISPLAY light.uni.verse:0
dark% xfig &
とするか、あるいは
dark% xfig -display light.uni.verse:0 &
とします。
リモートコンピュータで sh を使っているなら
dark$ DISPLAY=light.uni.verse:0
dark$ export DISPLAY
dark$ xfig &
とするか、あるいは
dark$ DISPLAY=light.uni.verse:0 xfig &
とします。もちろん
dark$ xfig -display light.uni.verse:0 &
でもいいです。
(訳注;
dark$ env DISPLAY=light.uni.verse:0 xfig&
なら csh でも sh でも使えますね :) )
telnet の種類によっては、自動的にリモートホストへ DISPLAY
変数を
転送するものもあるようです。そんな telnet を使用するなら、
ディスプレイの指定を手動で行なわなくてもよいので、幸運でしょう。
telnet の殆どは TERM
環境変数を転送する種類なので
賢くやるなら、TERM
環境変数に DISPLAY
変数の内容を代入して
代用させることです。
代用するのと同様の考え方で、次のような数行のスクリプトで実現できます。
telnet する前に、TERM
にDISPLAY
の値を加える。telnet する。 リモートコンピュータの適切な.*shrc
ファイルで、TERM
からDISPLAY
の値を読む。