[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[debian-users:16450] Re: xdm が起動時にうまく起動しない ( 解決)



佐野@浜松です。

In article <19990627033801C.nagai@xxxxxxxxxxxx>
 Toyohiko Nagai <nagai@xxxxxxxxxxxx> さん writes:

>   ところで、本来のランレベルの変更時に呼び出されるときと、root
> でログインしたシェルから直接呼び出される時って、/etc/init.d の
> 中のスクリプトからみた呼び出し元のユーザー環境って、なにかが違
> うのでしょうか?ランレベル変更時もrootなんだとばっかり思ってた
> んで・・・。

これは Debian Specific ではないような気がする、、、

3.3.3.1 の xc/programs/Xserver/hw/xfree86/common/xf86Config.c には

    /*
     * ~/XF86Config ...
     */
    if (getuid() == 0 && (home = getenv("HOME"))) {
      configPaths[++pcount] = (char *)xalloc(PATH_MAX);
      strcpy(configPaths[pcount],home);
      strcat(configPaths[pcount],"/XF86Config");
      if (xconfig) strcat(configPaths[pcount],xconfig);
      if ((configFile = fopen( configPaths[pcount], "r" )) != 0) break;
    }
    
というコードがあるみたいなので、 PID=1 の init から /etc/init.d/rc を
経由して呼び出される場合は getenv("HOME") がセットされないんじゃないかな ?

と思ってちょっと実験してみました。

 /etc/init.d/rc の冒頭を

# Un-comment the following for debugging.
debug=echo

touch /tmp/chklog
printenv HOME >>/tmp/chklog
echo $HOME >>/tmp/chklog
date >>/tmp/chklog

と編集して、 telinit 3; sleep 30; telinit 2 としてみます。

結果は

/
/
Wed Jun 30 10:16:24 JST 1999
/
/
Wed Jun 30 10:16:55 JST 1999

でした。たぶん getenv(HOME) は "/" を返すんじゃないかな。

 /etc/init.d/rc 経由で xdm が起動される際には、もし /XF86Config が
存在した場合には、/root/XF86Config ではなく、そちらが読まれることに
なるだろうと予想されます。

# もしかすると "//XF86Config" だと  open できなかったりするかも
# しれませんが (大丈夫かもしれないが)、そこまでは確認してないです。

-- 
     #わたしのおうちは浜松市、「夜のお菓子」で有名さ。
    <xlj06203@xxxxxxxxxxx> : Taketoshi Sano (佐野 武俊)