Though this has been answered well by some others, I'd like to add some thoughts:
1) PATH is only consulted if the executable invoked has no path elements in it. somecommand would be looked up in $PATH, ./somecommand
or /usr/bin/somecommand
, or ../../bin/somecommand
just use directory rules, not PATH
If there are multiple executable files in PATH with the same name which one is preferred?
It stops at the first one it finds, reading $PATH left to right.
Is current directory included in the search when file is executed?
If the current directory is in PATH then it is searched. Remember that an empty directory in PATH includes the current directory. e.g. PATH=:/usr/bin (leading empty) PATH=/usr/bin: (trailing empty) and PATH=/usr/bin::/bin (middle empty) will all effectively include current working directory.
Suppose there is a file with name executable.sh in a current directory. Would that work if it is executed $ executed and . is not part of the PATH?
It would never find it by searching PATH. If current dir is not in PATH, it won't find it by a PATH lookup.
That said (and sorry to add confusion) if there was an alias or function that ran the command, it would be run. Or if your shell had a location cache, and the executable was in the cache, it may find it. So, it will never find it in PATH, but it may be run by other means.
which <executable>
command will be useful in this thread.