2008-04-28

scim 在 ubuntu 8.04 的怪現象

如果你是使用 gcin 的話,而且又是使用 zh_TW.UTF-8 當作 locale,那麼不難發現一個怪現象,就是使用 sudo 時,輸入法會變成 scim。

在 7.10 的版本時可將 scim 移除,但在 8.04 由於依附性問題,"很難" 將 scim 清除。

這個問題來由是sudo 時,系統會抓當時的 locale,只要是 zh_TW,那麼就會很雞婆的將 scim 啟動。

不妨做個實驗:

1. 如果你是使用 zh_TW.UTF-8 中文介面

# sudo gedit

以上指令將會啟動 scim

# env LC_ALL=en_US.UTF-8 sudo gedit

以上指令不會啟動 scim

2. 如果和我一樣是使用英文介面,即 en_US.UTF-8

# sudo gedit 不會啟動 scim

# env LC_ALL=zh_TW.UTF-8 sudo gedit 會啟動 scim

-------

這個是一個很奇怪的現象,不管如何設定 root 的 ~/.xinput.d/ 下的輸入法(使用 im-switch)都是沒用的。

解決的方式不是很完美,但提供了一些方法:

1. 使用 en_US.UTF-8 當做你的 lcoale,並執行

# im-switch -z en_US.UTF-8 -s gcin

或是不管任何語系,都用 gcin 輸入法

# im-switch -z all_ALL -s gcin

這樣使用 sudo gedit 時,就不會啟動 scim 了,因為 locale 不是 zh_TW.UTF-8。

缺點是顯示的是英文介面。

2. 若一定要用 zh_TW.UTF-8 當做 locale,那麼在使用 sudo 時,記得加上 env LC_ALL=en_US.UTF-8,如:

# env LC_ALL=en_US.UTF-8 sudo gedit

2-1. 修改 /etc/default/locale 這個檔案,改成如下:

LANG="en_US.UTF-8"
LANGUAGE="en_US:en"

用 sudo su 切換到 root,由於內定的 locale 是 LC_ALL=en_US.UTF-8,所以使用 gedit 等類似指令,也不會啟動 scim 這個陰魂不散的東東了。

以上辦法,不完美,但可讓 scim 不啟動。

-------

有些人可能連想到,去更改 root 的 locale 或是修改 /etc/default/locale 這個檔案再用 sudo 方法,這是沒用的,如果你的 locale 是 zh_TW.UTF-8,但使用 sudo gedit 時會將目前的 locale 資料傳過去,所以 root 還是會用到 zh_TW.UTF-8 的 locale。

沒有留言 :

張貼留言