A shell is a program that takes user input and passes it to the system.
As far as I know ALL shells use the $PATH environment variable to determine where to look for programs.
You can find your $PATH with the following syntax (I'll assume bash for all examples):
On my system this gives me:
Code:
david@cyberman:~/> echo $PATH [3:29]
/home/david/garnome/bin:/home/david/bin:/opt/wine/bin:/bin:/usr/bin:/usr/X11R6/bin:/opt/mplayer/bin:/usr/local/bin
david@cyberman:~/>
The shell will look only in those directories for programs, you can set it to look for programs with whatever the current working directory is by adding "." to the $PATH. However I wouldn't bother, the programs you run regulary should be in the bin directories, when you want to run a program that isn't in your $PATH you can provide a path to it.
For example, to run "foo" in the currect directory: