/bin/bash^M: bad interpreter: No such file or directory

Sometimes when you take a file from a DOS/Windows system and move it to a Linux or Unix system you will get bash /bin/sh^M: bad interpreter: No such file or directory

DOS uses a carriage return (^M) with a line feed therefore linux system confused and thinks the script should be executed by /bin/bash^M which doesn’t exist.

Solution:

Option 1:

Install dos2unix and convert the file
Use the dos2unix command in linux to convert the saved file. example :

dos2unix file_name

Note: If its is not installed then
use yum install dos2unix

dos2unix Zip_Remove_CV.sh

Option 2:

vi and vim will convert line endings when you specify the file format.

vi myscript.sh

Hit ESC to enter command mode where you can set the format and save your changes.

:set fileformat=unix

:x!

Option 3:

sed is handy for cleaning up things like this from the command line.

sed -i ‘s/r//’ myscript.sh

Download and install yourself a copy of Notepad++ (free).
Open your script file in Notepad++.
File menu -> Save As ->
Save as type: Unix script file (.sh;.bsh)
Copy the new .sh file to your Linux system
Maxe it executable with: chmod 755 the_script_filename
Run it with: ./the_script_filename

Leave a Reply

Your email address will not be published. Required fields are marked *