XDMはグラフィカルターミナルにログインするのによく使われる方法です。 一見するとloginのように感じられますが内部的には全く異なるものです。
/etc/X11/xdm
ディレクトリには、ログインそれぞれで実行される設定
ファイルがあります。Xstartup
("Xstartup_0
"
はスクリーン0用)はユーザーがログインした後で実行されるコマンドが書かれて
います(コマンドはrootとして実行されます)。
ユーザー用にセットされたパスは/etc/X11/xdm/xdm-config
にあります。
そこには
DisplayManager*userPath: /usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games
DisplayManager*systemPath: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/X11
といった行があります。
これらはそれぞれ通常ユーザーとrootのデフォルトパスです。Xユーザーなら
/usr/bin/X11
にパスが通っていることはとても重要です。もしXユーザー
が他のマシンにログインしてXクライアントアプリケーションを起動する場合、
/usr/bin/X11
はXターミナルから直接参照されないパスなので
/usr/bin/X11
を入力しなくてはいけません。
Xstartupを走らせて、XDMは最終的なユーザー(final user)として
/etc/X11/Xsession
を走らせます。ローカル設定は
/etc/environment
にあり、もしこれがあればXsessionで使われます。
(Xsessionは/bin/sh
から実行されます。つまり/etc/environment
はshファイルである必要があります)。これはsshとクラッシュします。
sshは、/etc/environment
はVAR=VALUE
フォームの行を含んでいる
ファイルとするからです。
デフォルトではX windowマネージャーのメニューから起動される全てのコマンドの
パスはXDMから継承されています。違うものを使うなら正しくセットする必要があり
ます。"通常の"パスを使ってターミナルエミュレータを起動するには、
特殊オプションを使います。xtermでは、シェルログイン初期化ファイルで指定され
たパスでログインシェルを使うのに、-ls
オプション(loginシェル)を使わ
なければいけません。
訳注:xterm manページの-lsオプションの箇所を参照して下さい。
ウィンドウマネージャはXDMの環境を継承しています。ウィンドウマネージャに よって起動されるプログラムは全てウィンドウマネージャの環境を継承します。
ユーザーシェル環境はウィンドウマネージャのボタンやメニューから起動する プログラムに影響しません。例えばxterm -lsから実行したプログラムは ログインシェルの環境を使い、メニューから起動したプログラムは ウィンドウマネージャの環境を使います。