vine-users ML アーカイブ



[vine-users:079065] Re: scimに ついて

  • From: 長南洋一 <cyoichi@xxxxxxxxxxxxxxx>
  • Subject: [vine-users:079065] Re: scimに ついて
  • Date: Tue, 06 Jan 2009 11:42:26 +0900 (JST)
長南です。

# 全文引用は御無用です。前のメールはこちらにもありますから。

佐藤さんのメールより [vine-users:079063]
> 
> ランレベル3で起動した後、同じ事をやった結果が以下です。
> startxを実行する前です。startx実行後は前回と同じになります。
> startx後に、gnome-terminal、geditを実行してもscimの数は
> 変わりませんでした。

runlevel 3 でブートしてみたのは、とてもよいことでした。
X Window System を起動する前にも、scim-launcher が動いているんですね。
それは、非常に不思議なことです。

Vine の場合、X の起動時に起動スクリプトを介して scim が実行される
のが標準です。そのスクリプトが、前に述べた /etc/X11/xinit/xinitrc.d/
setime であり、最終的に scim -d を実行しているのは、/etc/.../setime 
から呼び出される /usr/share/vine/imelib 中の startScim シェル関数です。

つまり、Vine の標準では、X が起動する前に scim が動いているはずが
ないのです。また、X 起動前に scim -d を実行しても、普通は scim の
起動に失敗します(scim の起動を成功させる方法もありますけれど)。

# 実は、gdm も scim を起動しています。しかし、gdm が起動する scim は、
# ユーザがログインしたとき、すべて殺されるようです。

それでも、佐藤さんのところでは、X の起動前に scim が動いている。
いったい、どこで実行されているんでしょうか。

ところで、マシンはお一人でお使いなんですか。vnc かなんかで同時に
複数の人が使用しているということはありませんか。もしそうなら、
scim はそっちで使っているということになるのですが。

マシンをブートすると、まず /etc/rc.d/rc.sysinit が実行されます。
それから、runlevel 3 なら /etc/rc.d/rc3.d 中の、runlevel 5 なら、
/etc/rc.d/rc5.d 中のスクリプト(実はリンク)が実行される。

ここでログインになるわけですが(runlevel 3 の場合を考えます)、
シェルに bash を使っていれば、bash がログインシェルとして起動され、
まず /etc/profile を、それから ~/.bash_profile を読み込んで実行します。
正確な説明は、man bash (jman bash)をやって、「INVOCATION(起動)」を
読んでください。

Vine の場合、profile から、/etc/profile.d/*.sh が実行されますし、
~/.bash_profileからは、~/.bashrc が、 ~/.bashrc からは /etc/bashrc が
実行されています。ざっとそんな具合ですが、それぞれのスクリプトから、
さらに呼び出されているスクリプトもあるかもしれません。

# 続いて startx で X 関係の起動スクリプトが読み込まれるわけですが、
# 佐藤さんの場合は、startx 以前にすでに scim-launcher が動いている
# のですから、こっちを考える必要はないでしょう。

そんなわけですから、上に述べたスクリプトを、まず bash 関係から
始めて(シェルが bash でなかったら、その関係のものから)、調べて
みたら、何かわかるかもしれません。繰り返しになりますが、Vine の
標準では、上のようなブート/ログイン時のスクリプトから scim が
実行されることはないはずなのです。そうしたスクリプトを変更した
御記憶はないでしょうか。

# なお、ps -A ではなく、ps ax の方を使ってみてください。
# scim 関係のコマンドの引数までわかりますから。scim -A でも、
# 引数までわかるようにすることができるのかもしれませんけれど。

-- 
長南洋一