【BASH】LINUXでスクリプトを実行すると ‘^M: bad interpreter’エラーが出る場合の対処方法

この記事はブログとプログラミングで生計をたてている海外在住ウェブディベロッパーがわかりやすさにこだわって作成しました

ローカルPCがWINDOWSの場合、LINUXサーバーにスクリプトを転送するとよくこの現象が発生します。viでファイルフォーマットを変換する機能がわかるまでは正規表現で改行コードを一括置換していました。知っておくと便利です!

現象

LINUXでスクリプトを実行すると ‘^M: bad interpreter’エラーが表示されて動作しない

環境

Linux

原因

スクリプトのファイルフォーマットがDOS になっている

対策

以下の手順で対象のファイルフォーマットをDOSからLINUXに変換します。
※ここでは対象スクリプトをtarget.shにしています。

  1. ファイル編集を可能にするためパーミッションを変更します
    chmod a+x target .sh
  2. 次に、viエディタで対象スクリプトを編集します
    vi target .sh
    :set fileformat
    :set fileformat=unix
    :wq

以上です。

PHP/Javascript/WORDPRESS案件全般承ります

オーストラリアで主に日系企業や個人のお客様からのご依頼でお仕事をしております。この記事についてのご質問またはお困りのことがございましたら、お気軽にお問い合わせください。

タイトルとURLをコピーしました