[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 (佐野 武俊)