Como também ewhac apontou , o erro as mensagens diferem porque a última linha de comando contém barras ( / ), o que faz com que o seu shell interprete como um caminho de arquivo.
Ambos os erros são originários do seu shell, que neste caso é bash (o que é evidente a partir da segunda mensagem de erro).
Mais especificamente, o primeiro erro se origina da função execute_disk_command() definida em execute_command.c no bash-4.2 código-fonte. A função execute_disk_command() chama search_for_command() definido em findcmd.c , que, caso o pathname especificado não contenha barras, pesquisa $PATH para o pathname . No caso de pathname conter barras, search_for_command() não executa essa pesquisa. Caso search_for_command() não retorne um comando, execute_disk_command() falhará com o erro interno command not found .
O segundo erro se origina da função shell_execve() , também definida em execute_command.c . Neste ponto do seu cenário, search_for_command() teria retornado com êxito porque não teria sido necessária nenhuma pesquisa e execute_disk_command() chamou shell_execve() , que, por sua vez, executa a chamada de sistema execve() . Isso falha, porque o arquivo execve() tenta executar não existe e execve() indica isso configurando errno apropriadamente. Quando execve() falha, shell_execve() usa strerror() para relatar a mensagem de erro do arquivo correspondente ( No such file or directory ) e sai do shell imediatamente no erro.