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課)に所属 好きな食べ物はみそ汁