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から実行したプログラムは ログインシェルの環境を使い、メニューから起動したプログラムは ウィンドウマネージャの環境を使います。