[vine-users:080707] Re: 再現しませんか?(XfceのXterminalエミュレーター+csh)
長南洋一
cyoichi @ maple.ocn.ne.jp
2010年 11月 19日 (金) 22:55:33 JST
長南です。
かとうさんのメールより [vine-users:080701]
>
> On 10/11/19 15:11, Umeda Mitsunori wrote:
> > [suomi @ localhost ~]$ su
> > Password:
> > setenv: 文法が間違っています.←ここが問題なのでしょうか?
> >
> > root権限は無事に取得出来ているのですが、何故、どの様な文
> > 法が間違っていますか?と言うメッセージが出るのでしょうか
>
> ~/.cshrc中で"setenv hoge=value"と書いていませんか? 正しくは
> "setenv hoge value"です。
これなんですけれど、su をしたということは、root として新たに
シェルを起動したということで、しかも root のシェルを csh に
変更しているわけだから、/root/.tcshrc が読まれるわけでしょう。
で、そこにこういうところがあります。
# 梅田さんへ。Vine の csh の本体は tcsh です。そして、実験して
# みたところでは、tcsh ではなく、csh として起動しても、
# ${HOME}/.tcshrc が読まれるらしいです。
# .tcshrc、.cshrc などについては、man tcsh で調べてください。
setenv target ${HOME}/.vine/system/ime
if ( -f $target ) then
foreach _line_ ("`/bin/cat $target`")
eval `echo $_line_ | /bin/sed -e 's|=C$|=en_US|g' -e 's|\([^#]*\)=\(.*\)|setenv \1 \2|'`
end
---- (以下省略) ----
${HOME}/.vine/system/ime なかには
XMODIFIERS=@im=SCIM
があります。sed の正規表現のマッチはたしか最左最長 (用語は
これで正しいですか) ですから、s|\([^#]*\)=\(.*\)|setenv \1 \2| が
setenv XMODIFIERS=@im SCIM
に変換されてしまう。その結果「setenv: 文法が間違っています」が
出る。そういうことではないでしょうか。
-e 's|\([^#=]*\)=\(.*\)|setenv \1 \2|'
と書き直せば、一応エラーが出ないようです。副作用がなければ
よいのですが。
ざっとしか試していないので、間違えていたら、ご容赦。
--
長南洋一
vine-users メーリングリストの案内