/bin/bash^M: bad interpreter: No such file or directory の時の対処法

いつもは、LinuxにSSHログインしてvim コマンドでシェルスクリプトを作るのですが、Windowsでテキストエディタでシェルスクリプトで作ると改行コードが「\r\n」で保存されて、シェルスクリプトを実行すると下記のようなエラーになります

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

エラーになったシェルスクリプトの改行コードを確認します。catコマンドで「-e」のオプションを使用すると改行コードが表示されます

$ cat -e ./test.sh 
#!/bin/bash^M$
^M$

Windowsの改行コードが入っているので、sedコマンドで「\r\n」を「\n」になるように置換すれば、「/bin/bash^M: bad interpreter: No such file or directory」は解消されます

コマンド:sed -i 's/\r//’ <対象のファイル>

$ sed -i 's/\r//' <対象のファイル>

# test.shの場合は下記のようになります
$ sed -i 's/\r//' test.sh

# 置換後の改行コードを確認します
$ cat -e ./test.sh
#!/bin/bash$
$