It's just taken a colleague and I a number of hours — on release day, naturally — to track down a fault with a shell script, because Bash was unclear in its error reporting:

Performing firmware upgrade...
./v2.14~test.bin: line 172: /tmp/upgrade-hw.sh: not found
[xy765 /root]# cd /tmp
[xy765 /tmp]# ls -l upgrade-hw.sh
-rwxrwxr-x    1 503      504          3414 Oct  4 12:09 upgrade-hw.sh

The file is obviously not "not found", but it turned out that upgrade-hw.sh had recently been imbued with DOS-type line endings (which affected every line including the first one with the shebang "#!/bin/bash") and it was, in fact, the "/bin/bash^M" program that could not be found!

A lesson to us all…