私たちは定期的にファイルの行末を壊し、気付かないうちに動作を停止します。
Bashは、ここで説明されているように、「無効なオプション」または「:コマンドが見つかりません」について文句を言います: http://thinkinginsoftware.blogspot.ca/2012/11/linux-server-cries-for-linux-desktop.html
これにより他のテキストファイルも破損する可能性があるのではないかと心配しています(conf、crons ...)
私たちは、Windows、Mac、またはLinuxを使用して1つのサーバー上のLinuxファイルを編集する人々のグループです。これらのファイルを手動で編集します(ssh + vi/nanoまたはlocaly + ftp)。 コピーして貼り付けることがありますが、これが問題の原因だと思います。 はい、あまり良くない理由で変更をテストしない場合があります。同じスクリプトがレプリケートサーバーで機能し、変更が一部の行をインデントするだけです。これは必要であることに同意します対処する
Chef/Puppetのようなソリューションの使用は計画されていません。
TLDRのコピー&ペーストは問題ではなく、FTPは問題です。
Windows + Notepad ++ + PuTTY + nanoおよびviでWindowsの行末CRLFをコピーして貼り付けるテストを行いました。 CR(^ M)文字がフィルタリングされているように見えますが、ファイルに貼り付けられるのはLFのみです。コピー/貼り付け理論について疑問を持たせてくれたewwhiteに感謝します!
FileZillaのオプション「送信モード」を使用してFTP経由でCRLF終了ファイルを自動に転送しました。 CRLFは保持されます。 FileZillaがそれらをLFに変換できるかどうか疑問に思います。
Linux以外のOSを禁止したり、コピー&ペーストを禁止したりすることはできません。
私はそれらの解決策を考えました:
#2と#3の長所:これらを使用して、それを必要とするプログラムの最後の空白行を追加することもできます。
Bashの使用、バージョン4.2.37(1)-リリース
編集:反対票が1つありましたが、その理由を説明していただけますか?
一部のレガシーシステムでは、これに対処する必要があります。組織のソース管理( Borland Starteam )に保持されているファイルが間違ったラインフィード構成に設定されている場合がありました。
ただし、多くのクロスプラットフォーム環境で作業している場合、コピー/貼り付けだけでこの問題が発生することはありません。以下からのアウトプットに基づいて傾向を特定し、最悪の犯罪者に適切に対処するようにしてください。
DOS改行を使用してファイルを定期的に検索します。
find /var/www -not -type d -exec file "{}" ";" | grep CRLF
例:
# find /ppro/bin -not -type d -exec file "{}" ";" | grep CRLF
/ppro/bin/compile/save/srcfix.c: ASCII C program text, with CRLF line terminators
/ppro/bin/compile/bldtag.c: ASCII Pascal program text, with CRLF line terminators
/ppro/bin/compile/bldtag.c.sav: ASCII Pascal program text, with CRLF line terminators
/ppro/bin/compile/dbcsum2.c: ASCII Pascal program text, with CRLF line terminators
/ppro/bin/hphw/print_sv.c: ASCII text, with CRLF line terminators
/ppro/bin/linuxhw/dhcpd.conf: ASCII text, with CRLF line terminators
/ppro/bin/linuxhw/dhcpd.conf.mult_subnet: ASCII text, with CRLF line terminators
次に[〜#〜]バーン[〜#〜]それら!!
覚えておいてくださいdos2unix
一部のシステムでは、権限が変更されます。