现在的位置: 首页 > 综合 > 正文

DISPLAY 环境变量的用法

2017年11月13日 ⁄ 综合 ⁄ 共 1086字 ⁄ 字号 评论关闭
現在 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) となっている。

xhostについて、

デフォルトでは、ローカルホスト以外からは X サーバにアクセスすることはできないが、
% xhost +foo.bar.com

とすると、foo.bar.com からのアクセスを許可する。

% xhost +

とすると全てのホストからアクセス可能になる。


なお、本当に xhost + とすると、全世界のホストから
% xwd -display your.host.com:0.0

などと、スクリーンショットを取ったり、画面上に任意のプログラムを表示したり、全てのキーストロークを盗むことが可能になる。なので、xhost の代わりに xauth を使うのが望ましい。

【上篇】
【下篇】

抱歉!评论已关闭.