なんとなく 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年も前だよ……。