クライアントプログラム (例としてグラフィックアプリケーション) は
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
変数を
転送するものもあるようです。
それらの一つを使っているなら、幸運です。ディスプレイの指定を
手動で行う必要がありません。そうでなく、DISPLAY
環境変数を転送
しない telnet でも、大部分のものが TERM
環境変数の転送は
行います。なので、賢いハックを行えば、TERM
変数に DISPLAY
変数を
背負わせることもできます。
このアイデアは次のような数行のスクリプトで実現できます。
telnet する前に、TERM
にDISPLAY
の値を加える。telnet する。 リモートコンピュータの適切な.*shrc
ファイルで、TERM
からDISPLAY
の値を読む。