diff --git a/components/finsh/msh.c b/components/finsh/msh.c index 691ab55381..85fe04b8a7 100644 --- a/components/finsh/msh.c +++ b/components/finsh/msh.c @@ -11,6 +11,7 @@ */ #include #include +#include #ifdef RT_USING_FINSH @@ -483,7 +484,7 @@ found_program: int msh_exec(char *cmd, rt_size_t length) { - int cmd_ret; + int cmd_ret = 0; /* strim the beginning of command */ while ((length > 0) && (*cmd == ' ' || *cmd == '\t')) @@ -521,7 +522,8 @@ int msh_exec(char *cmd, rt_size_t length) #ifdef RT_USING_SMART /* exec from msh_exec , debug = 0*/ /* _msh_exec_lwp return is pid , <= 0 means failed */ - if (_msh_exec_lwp(0, cmd, length) > 0) + cmd_ret = _msh_exec_lwp(0, cmd, length); + if (cmd_ret > 0) { return 0; } @@ -538,7 +540,16 @@ int msh_exec(char *cmd, rt_size_t length) } *tcmd = '\0'; } - rt_kprintf("%s: command not found.\n", cmd); +#ifdef RT_USING_SMART + if (cmd_ret == -EACCES) + { + rt_kprintf("%s: Permission denied.\n", cmd); + } + else +#endif + { + rt_kprintf("%s: command not found.\n", cmd); + } return -1; }