Emacs has commands for passing single command lines to shell subprocesses, and for running a shell interactively with input and output to an Emacs buffer, and for running a shell in a terminal emulator window.
Whenever you specify a relative file name for an executable program
(either in the cmd argument to one of the above commands, or in
other contexts), Emacs searches for the program in the directories
specified by the variable
exec-path. The value of this
variable must be a list of directory names; the default value is
initialized from the environment variable PATH when Emacs is
started (see General Variables).
M-x eshell invokes a shell implemented entirely in Emacs. It is documented in its own manual. See Eshell.