web-dev-qa-db-ja.com

DISPLAY =:0とは何ですか?

とは DISPLAY=:0とはどういう意味ですか?

コマンドじゃないですか? (gnome-panelはコマンドです。)

DISPLAY=:0 gnome-panel
26
Tim

DISPLAY=:0 gnome-panelは、外部コマンドgnome-panelを環境変数DISPLAY:0に設定して実行するシェルコマンドです。シェル構文VARIABLE=VALUECOMMANDは、指定されたコマンドの間のみ環境変数VARIABLEを設定します。 (export VARIABLE=VALUE; exec COMMAND)とほぼ同じです。

環境変数DISPLAYは、GUIプログラムとGUIとの通信方法を指示します。 Unixシステムは、複数の Xサーバー 、つまり複数のディスプレイを実行できます。これらのディスプレイは、物理ディスプレイ(1つ以上のモニター)、リモートディスプレイ(ネットワーク経由で転送、SSHなど)、または Xvfb などの仮想ディスプレイにすることができます。ディスプレイを指定する基本的な構文は、 Host:NUMBER; Hostの部分を省略した場合、ローカルの表示になります。

ディスプレイには0から番号が付けられているため、:0は最初に起動されたローカルディスプレイです。通常のセットアップでは、これはコンピュータのモニターに表示されるものです。

すべての環境変数と同様に、DISPLAYは親プロセスから子プロセスに継承されます。たとえば、GUIセッションにログインすると、ログインマネージャーまたはセッションスターターがDISPLAYを適切に設定し、変数はセッション内のすべてのプログラムによって継承されます。 X転送を使用してSSH接続を開くと、SSHはDISPLAY環境変数を転送された接続に設定し、リモートマシンで実行するプログラムがローカルマシンに表示されるようにします。転送されたX接続がない場合(SSHが設定されていないため、またはローカルXサーバーがないため)、SSHはDISPLAYを設定しません。

DISPLAYを明示的に設定すると、通常は表示されない場所にプログラムが表示されます。たとえば、SSH接続でDISPLAY=:0 gnome-panelを実行すると、リモートマシンのローカルディスプレイでGnomeパネルが起動します(パネルが1つあり、ユーザーがそれにアクセスする権限を持っていると想定)。 DISPLAY=:0を明示的に設定することは、通常、リモートアクセスやcronジョブなど、ローカルセッションの外部からマシンのローカルディスプレイにアクセスする方法です。

シェル全体ではなく、そのプログラムにのみ渡される環境変数です。これは、コマンドと同じ行に変数を設定すると発生します。

X11プログラムはクライアント/サーバーシステムであり、リモートマシンに表示できるため、ウィンドウを表示する場所を知る必要があります。これは、単にローカルマシンの最初のディスプレイを使用することを意味します。

これは通常、デスクトップ環境にログインすると自動的に設定されます。たとえば、グラフィカルターミナルを開き、echo $DISPLAYと入力します。

30
teppic