msh: fix the case where the file has exec bit but can't be run directly
     (run "$SHELL $file" instead)
msh: fix exit codes when command is not found or can't be execed
     (with testcases)

diff --git a/shell/msh_test/msh-execution/exitcode_EACCES.right b/shell/msh_test/msh-execution/exitcode_EACCES.right
new file mode 100644
index 0000000..b13682c
--- /dev/null
+++ b/shell/msh_test/msh-execution/exitcode_EACCES.right
@@ -0,0 +1,2 @@
+./: cannot execute
+126