[Fix] bash: script.sh: /bin/bash^M: bad interpreter: No such file or directory


If you are trying to execute a bash .sh script on Linux or Unix environment like Ubuntu or macOS and you get the error "/bin/bash^M: bad interpreter: No such file or directory" the reason is that you have Ctrl+M characters in your file, most likely its because you wrote the file on a Windows text editor having Windows EOL encoding format (\r).



Fix/Solution:

There are multiple ways in which this issue can be fixed, let's take a look at a few of them.

Solution 1: Using sed command:

sed command is a stream editor for filtering and transforming text, so you can read all \r (ctrlM) characters and remove them.

# sed -ie 's/\r$//' your-script-filename.sh
or,
sed -ie 's/^M$//' your-script-filename.sh


Solution 2: Using Text Editor like Notepad++/Sublime Text/Edit Plus:

You can make use of Text Editors like Notepad++ to change the End Of Line Encoding (EOL),

Notepad++
  • Open the file in Notepad++,
  • Go to Menu: Edit,
  • Now Look for option, EOL Conversion,
  • And choose UNIX/OSX Format
Advertisements
Try Out Code2care Dev Tools:

Advertisements

Advertisements
Code2care is an initiative to publish and share varied knowledge in programming and technical areas gathered during day-to-day learnings and development activities.

Students and software developers can leverage this portal to find solutions to their various queries without re-inventing the wheel by referring to our easy to understand posts. Technical posts might include learnings, tutorials, trouble-shooting steps, video tutorials, code snippets, how-to, blogs, articles, etc.

🎉 We are celebrating the 10th years of Code2care! Thank you for all your support!

We strongly support Gender Equality & Diversity.