スクリプトを実行しようとするsh
と、Mac で次のエラーが発生します。
/usr/bin/perl^M: bad interpreter: No such file or directory
どうすればこれを修正できますか?
/usr/bin/perl^M:
スクリプトの先頭の行から^M
末尾の を削除します。これは、シェルを狂わせる偽の ASCII 13 文字です。usr/bin/perl
#!
文字が表示されない場合は、バイナリ エディタでファイルを検査する必要があります。
ファイルを Mac の改行形式に変換するには、次のようにします。
$ vi your_script.sh
viタイプで一度:
:set ff=unix
:x
問題は、Linux/Unix/OSX マシンで DOS/Windows テキスト形式を使用しようとしていることです。
DOS/Windows テキスト ファイルでは、改行とも呼ばれる改行は、キャリッジ リターン (CR) とそれに続くライン フィード (LF) の 2 つの文字の組み合わせです。Unix テキスト ファイルでは、改行は単一の文字、つまりライン フィード (LF) です。
Dos2unix は、ファイルのエンコーディングを変換できます。例:
dos2unix yourfile yourfile
ヘルプが必要な場合は、次を実行してください: man dos2unix
.
スクリプトに奇妙な行末があるようです:^M
は改行\r
です。スクリプトを Unix の行末に変換します ( Windows システムでの行末である の\n
代わりに)。\r\n