如果你是使用 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。
沒有留言 :
張貼留言