Eshell is the Emacs terminal emulator written 100% in elisp. It’s much faster than ansi-term or sane-term, and has some added benefits other than just speed.
If your on a Mac, you might not have access to some of the command you do in BASH, because you need to configure your exec-path. Similar to the $PATH variable in BASH, exec-path is a user defined value in Emacs that can take an array of directories that you want to expose for executing their binaries.
;; required for exposing commands in eshell or sane term. ;; Similar to setting your $PATH in BASH (setenv "PATH" (concat (getenv "PATH") ":/usr/local/bin")) ;; exec-path is used for Emacs programs that need to execute binaries. E.g.: ag, npm (setq exec-path (append exec-path '("/usr/local/bin")))
While this solution works just fine, there is also a package “exec-path-from-shell” that is a bit more automatic.