Search code examples
bashshellunix

Getting error ": command not found" when trying to run shell script


I have a script that I'm trying to run but I just get the error ": command not found" whenever I try to run it. Here's what I've tried to do to fix it:

  1. Made sure the hashbang is correct "#!/bin/bash"
  2. Run dos2unix on the file
  3. Run the script as scriptname.sh, ./scriptname.sh, and /bin/bash scriptname.sh
  4. chmod 755 scriptname.sh

I still am unable to run the script.


Solution

  • This is caused by carriage returns. Here's the excerpt from the bash tag wiki:

    1. Check whether your script or data has DOS style end-of-line characters

      • Use cat -v yourfile or echo "$yourvariable" | cat -v .

        DOS carriage returns will show up as ^M after each line.

        If you find them, delete them using dos2unix (a.k.a. fromdos) or tr -d '\r'

    Make sure to check all your data, and not just the script itself.