UNIX/Linuxの部屋 環境変数:DISPLAY

TOP UNIX/Linuxの部屋 UNIX/Linuxコマンド一覧 用語集 新版 由来/読み方辞書 環境変数マニュアル Cシェル変数 システム設定ファイル システムコール・ライブラリ ネットワークプログラミングの基礎知識 クラウドサービス徹底比較・徹底解説




環境変数 DISPLAY Xサーバが実際に描画するサーバ名 このエントリーをはてなブックマークに追加

現在 foo.com というローカルホストにいて、そこで X サーバが起動されているとする。ここで xeyes を実行すると、当然 xeyes のウィンドウが画面に表示される。この状況で実行されているプログラムは、X クライアント (xeyes) と X サーバである。xeyes が「マウスの位置を教えろ」「円を描け」と X サーバに要求し、X サーバはそのリクエストに従ってマウスの情報を渡したり、画面に円を描いたりしている。

では他のホストで X クライアントを実行してみよう。まず他のホストにログインする必要があるが、その前に
% xhost +
としておく (理由は後述)。そして telnet で bar.com にログインする。
% telnet bar.com
login: ログインネーム入力
password: パスワード入力
ここで xeyes を実行すると
% xeyes
cannot open display.
とエラーになってしまう。これは bar.com 側でウィンドウを開こうとして失敗したからである。foo.com にウィンドウを開くように指示しなければならない。
% setenv DISPLAY foo.com:0.0
これで xeyes が実際にリクエストを出す X サーバは bar.com ではなく foo.com になる。
% xeyes
とすると xeyes が表示されるはずである。この状況では、xeyes という X クライアントは bar.com で動いているが、xeyes は foo.com の X サーバに対して「円を描け」などと要求している。

上記のように環境変数 DISPLAY で設定してもよいが、
% xeyes -display foo.com:0.0
などとオプションで指定することもできる。-display オプションはほとんど全ての X アプリケーションで指定することができる。普通は X クライアントと X サーバは同一のホスト(ローカルホスト)で動いているので、DISPLAY は :0.0 (=localhost:0.0) となっている。