シェルを実行すると「bin/bash^M: bad interpreter」になってしまう。
bin/bash^M: bad interpreter: No such file or directory
このエラーの原因と回避方法を紹介する。
エラー原因
エラーメッセージを読むと存在しないファイルまたはディレクトリを参照しているように見えるが、実はエラー原因はそこではない。
bin/bash^M: bad interpreter: No such file or directory
エラーの原因は改行コード。
Windowsの改行コード CRLF \r\n
で保存されたシェルファイルをLinux環境で実行すると、Linux環境では改行コードがLF \n
なので bin/bash
を正しく認識できずにエラーになってしまう。
参考:
/bin/bash^M: bad interpreter: そのようなファイルやディレクトリはありません (No such file or directory) - カタカタブログ
エラーの回避方法
シェルファイルの中のWindowsの改行コード CRLF \r\n
をLinuxの改行コードがLF \n
に置換して保存しなおせばエラーを回避できる。
テキストエディタで開いて正規表現で置換すれば完了。
まとめ
- シェルの「bin/bash^M: bad interpreter」エラー原因は改行コード
- エラー回避方法は
\r\n
を\n
に置換すること