AWS CloudShellで「/bin/sh^M: bad interpreter: No such file or directory」となった時の対処法

記事タイトルとURLをコピーする

CI部SRE1課の古川(智)です。

Windows端末でシェルスクリプトを編集したら「/bin/sh^M: bad interpreter: No such file or directory」というエラーが出てきました。

今回はそんなときの対処法について書いていきます。

状況

Windows端末でAWS CloudShellを開き、そのままシェルスクリプトを書いて実行したところ以下のエラーが発生しました。

/bin/sh^M: bad interpreter: No such file or directory

Windowsの改行コード「^M」がスクリプト内に入ってしまっていることで、「/bin/sh^M」などというファイルは存在しないぞと怒られています。

解決方法

スクリプトファイルのファイルフォーマットをunixにすることで解決しました。

現在のファイルフォーマットを確認してみる

スクリプトファイルを vi で開き以下のコマンドを打ちます。

:set fileformat?

 
こんな感じ↓↓  

そうすると fileformat=dos になっていることが確認できました。

ファイルフォーマットをunixに変更する

スクリプトファイルを vi で開き以下のコマンドを打ちます。

:se ff=unix

以下の確認コマンドを実行します。

:set fileformat?

ファイルフォーマットがunixになっていることが確認できました。

最後にファイルを保存します。

:w

これで完了です!再度スクリプトを実行したところ上手くいきました。

おわりに

独り言のように「スクリプト実行できない!」とつぶやいていたところ、先輩方が助けてくれました。 Sさん、Sさん、Yさん、本当にありがとうございました。

古川智絵 (執筆記事の一覧)

2020年新卒入社 技術課(SRE1課)に所属 好きな食べ物はみそ汁