Bash script prints "Command Not Found" on empty lines

bash, debian, linux

Solution

Make sure your first line is:

#!/bin/bash

Enter your path to bash if it is not `/bin/bash`

Try running:

dos2unix script.sh

That wil convert line endings, etc from Windows to unix format. i.e. it strips \r (CR) from line endings to change them from `\r\n (CR+LF)` to `\n (LF)`.

More details about the `dos2unix` command (man page)

Another way to tell if your file is in dos/Win format:

cat scriptname.sh | sed 's/\r/<CR>/'

The output will look something like this:

#!/bin/sh<CR>
<CR>
echo Hello World<CR>
<CR>

This will output the entire file text with `<CR>` displayed for each `\r` character in the file.

Problem

Every time I run a script using `bash scriptname.sh` from the command line in Debian, I get `Command Not found` and then the result of the script. The script works but there is always a `Command Not Found` statement printed on screen for each empty line. Each blank line is resulting in a command not found. I am running the script from the `/var` folder. Here is the script: ``` #!/bin/bash echo Hello World ``` I run it by typing the following: ``` bash testscript.sh ``` Why would this occur?

Original source

Related problems