Why can a file containing valid shell commands still fail when invoked as ./runme.sh?
./runme.sh
The file also needs appropriate execute permission for direct invocation.
Linux can execute only binary files and never text-based scripts.
Direct invocation requires write permission but never execute permission.
Read permission automatically grants execute permission after the file is opened once.