Table of Contents
Bash: Bad interpreter: no such files or directory
Scenario
When you try to run a bash script you receive this error -bash: ./controller.sh: /bin/bash^M: bad interpreter: No such file or directory
In my case this happens systematically if I transfer bash files with FTP (e.g. Filezilla) from one Linux computer to another Linux computer because FTP standard for text file transforms CR into CR+LF
According to the FTP specification, ASCII files are always transferred using a CR+LF pair as line ending.
Another source of problem is editing bash files into Windows OS (you will be damned forever if you do it!)
Solution
When possibile, lock FTP on using binary mode for everything.
On Windows use an editor that allow to force *nix line ending with CR (e.g. notepad ++ or Eclipse)
For bash files already “corrupted” use:
dos2unix <file.sh>