Mitsukiの魔法実験室

Mitsuki's Magic Laboratory
Since 2002.09.14

tcsh と $HOME と空白の罠

Posted at 2007/06/14 17:56 in Cygwin

 なんとなく ruby/tk が使いたくなって迂闊に Cygwin をアップデートしたら、tcsh の起動で

if: Expression Syntax.
などというエラーが出て起動スクリプトが止まってしまうように。なんでやねん……とおもって調べてみると、/etc/profile.d/complete.tcsh の 42 行目

41:    foreach f ("$HOME/.hosts" /usr/local/etc/csh.hosts "$HOME/.rhosts" /etc/hosts.equiv)
42:        if ( -r $f ) then
43:	    set hosts = ($hosts `grep -v "+" $f | grep -E -v "^#" | tr -s " " "	" | cut -f 1`)
44:	endif
45:    end

で空白入り $HOME がダブルクオートなしで $f に展開されたのが原因っぽい(対応漏れ?)。とりあえず $f をダブルクオートで囲ったら今まで通り動くようになった。


42:        if ( -r "$f" ) then

 急にこうなった原因は多分、元々なかったか消してあった /etc/csh.cshrc が急に生えてきて complete.tcsh が読み込まれるようになったためだと思うけど、cygwin で tcsh つかってて、かつ C:\DOCUMENTS AND SETTINGS\%USERNAME%\ みたいな空白を含むパスを HOME にしてる人だと、この現象にひっかかってるはず……あんまりいないかな?

Cygwin使っている人いますか? part2」の 933 が同じ現象ぽそう。5年も前だよ……。