RHEL6 && OEL6 起動時に $DISPLAY はどのように決定されますか?

RHEL6 && OEL6 起動時に $DISPLAY はどのように決定されますか?

私のOEL6サーバーでは$DISPLAY変数に一貫性がなく、かなりの問題が発生しています。ソケットファイルに関する問題

環境変数 $DISPLAY を実際に設定するものについては、驚くほどほとんど情報がありません。それが何をするのか (多かれ少なかれ) と、シェルで手動で設定する方法はわかっていますが、システムの起動時にどのように設定されるのかはわかりません。

それで

GDM 環境変数 $DISPLAY はどのように、どこで設定され、GDM を :0.0 に強制するにはどうすればよいでしょうか?

export DISPLAY=:0.0注:この場合は役に立たないので、探していません。

答え1

男性の場合バツ(7)セクションがあります表示名どの州:

POSIX システムでは、デフォルトの表示名は DISPLAY 環境変数に保存されます。この変数は、xterm 端末エミュレータによって自動的に設定されます。

そして次は:

最後に、ほとんどの X プログラムは、DISPLAY の内容を一時的に上書きする -display displayname というコマンドライン オプションを受け入れます。これは、他の人の画面にウィンドウをポップしたり、自分のディスプレイを指す xterm を起動する「リモート シェル」コマンドの一部として最もよく使用されます。

男性向けエックスサーバー(1)オプションに関する情報があります:

:表示番号 X サーバーは指定されたディスプレイ番号で実行されます。デフォルトでは 0 です。ホスト上で複数の X サーバーを同時に実行する場合は、それぞれに固有のディスプレイ番号が必要です。クライアントが使用しようとするディスプレイ番号を指定する方法については、X(7) マニュアル ページの DISPLAY NAMES セクションを参照してください。

/etc/gdm/Init/Default を確認してください (ArchLinux では利用可能ですが、RHEL システムで利用可能かどうかは不明です)。

さらにいくつかの発見。DISPLAY は xinit プログラムによって設定されます。xinit.c には次の内容があります。

if (argc > 0 && (argv[0][0] == ':' && isdigit(argv[0][1])))
    displayNum = *argv;
else
    displayNum = *sptr++ = default_display;

(...)

static void
set_environment(void)
{
    if (setenv("DISPLAY", displayNum, TRUE) == -1)
        Fatal("unable to set DISPLAY");
}

したがって、xinit はデフォルト値を設定することも、実行時に xinit に渡されたオプションからデフォルト値を取得することもできます。xinit(1):

       xinit [ [ client ] options ... ] [ -- [ server ] [ display ] options ... ]

さらにもう 1 つ。環境変数は PAM によって設定できます。例:環境変数

# Set the DISPLAY variable if it seems reasonable
#DISPLAY                DEFAULT=${REMOTEHOST}:0.0 OVERRIDE=${DISPLAY}

関連情報