gitを使っていてたまに発生する現象。
それは改行コードがCRLFに変換されること。。。
違うOSを使って共同作業をしていてこれが発生しました。
(WindowsとMac)
.sh
の改行コードがCRLFになっていると.sh
が実行できなくなるので、
手っ取り早く改行コードを置換してしまいましょう。
置換
# .shだけLFに置換
find . -name \*.sh -type f | xargs -n 10 nkf -Lu --overwrite
# ファイルは全てLFに置換
find . -type f | xargs -n 10 nkf -Lu --overwrite
##コマンド解説
改行コード確認
od -c replace-schema.sh
# 以下の表示になってる部分が改行コード
# \r \n => CRLF
# \n => LF
ファイル検索
find . -type f -name \*.sh
# -type f => ファイルのみ検索
# -name \*.sh => .shのみ検索
# -nameの複数指定
find . \( -name \*.c -o -name \*.cc -o -name \*.h -o -name \*.hh \) -print
参考:http://d.hatena.ne.jp/stakizawa/20080522/t1
豆知識
# 引数を10個ずつ渡す
xargs -n 10
# ファイルの改行コードをLFにして上書きする
nkf -Lu --overwrite
# -Lu => LF => UNIX
# -Lw => CRLF => Windows
# -Lm => CR => Mac
# nkfはMacに入ってなかったので、brewで入れた
# brew install nkf
##原因の特定する際には
.sh
を実行する際には-xv
オプションをつける。
これで処理の詳細が見えたりする。