How does Unix search for executable files?
Solution 1:
The $PATH is searched from beginning to end, with the first matching executable being run. So directories at the beginning of $PATH take precedence over those that come later. Executables in the current directory (.) are only executed if . is in $PATH (which it usually isn't). There is no implicit inclusion of the current directory in the search path.
Solution 2:
For files in the current directory, you will want to precede them with ./
, so the command would become ./executable.sh
. You should never have .
in your PATH as it poses a security risk, among other problems.
Directories that come first in the PATH and searched first.
The overall order for searching is like this if I remember correctly:
aliases
exported functions
built-in shell commands
scripts and binaries in your PATH