シェルスクリプトの1行目は、#!/bin/sh
のように、シェルのパスを記載します。
正しく書いたのに bad interpreter: /bin/sh^M: no such file or directory
ってエラーが表示された時の対処方法を記載します。
1. 改行コードを確認する
MacOSXの場合、改行コードは LF である必要があります。
Visual Studio Code などで、改行コードがCRLFなどになっていないか、確認しましょう。
以下の場合は、改行コードがCRLFなので、エラーになります。
Visual Studio Codeの下のステータスバーにある CRLF
の箇所をクリックし、LFを選択して保存しましょう。
こうすることで、改行コードがLFに変換されるので、シェルスクリプトが正しく実行できると思います。
2. シェルのバイナリパスを確認する
シェルスクリプトの1行目に#!/bin/sh
と記載している場合、本当にsh
が/bin/
に存在しているのか確認しましょう。
which
コマンドを使用すると簡単にパスを取得することができます。
haruo@Haruos-MBP workspace % which sh
/bin/sh
このように、「which コマンド名」で実行すると、そのバイナリのパスを取得することができますので、シェルスクリプトの1行目に書いたパスが正しいか確認してみましょう。
コメント