さっしーブログ

埼玉県在住のシステムエンジニアです。基本的には技術的な内容を中心に発信していきます。

シェルスクリプトの実行で「/bin/bash^M: bad interpreter: No such file or directory」が発生した場合の対処法

目次

環境

  • CentOS6.8

エラー内容

-bash: ./run_mock.sh: /bin/bash^M: bad interpreter: No such file or directory

原因

上記、エラーの原因はシェルスクリプトの改行コードの違い(「\n」ではなく「\r\n」になっている)により、処理できなかった場合に発生します。

対処法

このエラーを解決するには、改行コードを「\r\n」から「\n」に置き換えてあげる必要があります。
そこで、便利なコマンドがあります。 コマンド名は「sed(セド)」です。

コマンド

下記コマンドをそのままコピペして、「[対象ファイル]」の部分だけ対象のファイル名に変更してあげればよいです。

$ sed -i 's/\r//' [対象ファイル]

sedとは?

入力データに対して、テキスト処理を行うプログラムです。 ちなみに、「sed」は「Stream Editor」の略です。

オプションとスクリプトコマンドの解説

「-i」は、オプションです。
これは、ファイルを直接編集します。

「 's/\r//' 」の部分の「s」がスクリプトコマンドになります。
これは、「\r」を空文字「""」に置き換えるという意味になります。

以上