I'm trying to run a sh
script and get the following error on Mac:
/usr/bin/perl^M: bad interpreter: No such file or directory
How can I fix this?
I'm trying to run a sh
script and get the following error on Mac:
/usr/bin/perl^M: bad interpreter: No such file or directory
How can I fix this?
An alternative approach:
The problem is that you're trying to use DOS/Windows text format on Linux/Unix/OSX machine.
In DOS/Windows text files a line break, also known as newline, is a combination of two characters: a Carriage Return (CR) followed by a Line Feed (LF). In Unix text files a line break is a single character: the Line Feed (LF).
Dos2unix can convert for you the encoding of files, in example:
For help, run:
man dos2unix
.Remove the
^M
at the end ofusr/bin/perl
from the#!
line at the beginning of the script. That is a spurious ASCII 13 character that is making the shell go crazy.Possibly you would need to inspect the file with a binary editor if you do not see the character.
You could do like this to convert the file to Mac line-ending format:
once in vi type:
You seem to have weird line endings in your script:
^M
is a carriage return\r
. Transform your script to Unix line endings (just\n
instead of\r\n
, which is the line ending on Windows systems).Remove
^M
control chars withAnd if you prefer Sublime Text - simply go to View -> Line Endings and check Unix.