[Cygwin] "$' ': コマンドが見つかりません"の対処法

Cygwin 64bit版で最新のgitをソースからコンパイルインストールしようとしたらエラーが出ました。
% make prefix=/usr/local all
./GIT-VERSION-GEN: line 2: $'\r': コマンドが見つかりません
./GIT-VERSION-GEN: line 5: $'\r': コマンドが見つかりません
./GIT-VERSION-GEN: line 8: $'\r': コマンドが見つかりません
./GIT-VERSION-GEN: line 14: 期待してない token `elif' のあたりにシンタックスエラー
'/GIT-VERSION-GEN: line 14: `elif test -d ${GIT_DIR:-.git} -o -f .git &&
    CC credential-store.o
調べてみたら、これはシェルスクリプトの改行コードがCRLFになっているのが原因のようです。

対処法

初めは.gitconfigのcore.autocrlfあたりを疑ったんですが、
git config --global core.autocrlf false
などとしても解決せず。

どうもgitの改行コード自動変換が悪さをしてるというよりは、make(またはautogen? autoconf?)が自動生成したシェルスクリプトに問題があるようです。

というわけで改行コードCRLFを強引に sed でLFに変換して、
find . -type f | xargs sed -i -e 's/\r\n/\n/g'
そのあとmakeしなおしたら無事いけました。

参考

"改行コードと「command not found」の関係について - カイワレの大冒険"
カテゴリ:

人気記事