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
Provide Feedback For This Article
We take your feedback seriously and use it to improve our content. Thank you for helping us serve you better!
😊 Thanks for your time, your feedback has been registered!
Comments & Discussion
Facing issues? Have questions? Post them here! We're happy to help!