The issue is not EOF but EOL. The shell sees a ^M as well as the end of line and thus tries to find /usr/bin/python^M . The usual way of getting into this state is to edit the python file with a MSDOS/Windows editor and then run on Unix. The simplest fix is to run dos2unix on the file or edit the file in an editor that explicitly allows saving with Unix end of lines. To fix, open your script with vi or vim and enter in vi command mode (key ESC), then type this: : set fileformat = unix Finally save it :x! or :wq!