start cmd:>$ strace sleep 1 execve("/usr/bin/sleep", ["sleep", "1"], [/* 99 vars */]) = 0 The conversion to the full path is done by the shell (more general: in userspace). The kernel expects a file name / path it can access directly.
If you want the system find your executable by looking through the PATH variable, you can rewrite your shebang as #!/usr/bin/env EXEC.
But also in this case it's not the kernel who does the search.