I work on Mac OS X 10.5.8. I am trying to learn emacs. I am very new to it and today tried to enter shell commands from within emacs. I entered pdflatex filename
. However, it gives me an error saying
/bin/bash: pdflatex: command not found
I have LaTeX installed and pdflatex works fine from the command line in the terminal.
I get a similar error for a command lsd
that I have defined in my .bash_profile
file. This works fine too on the command line in the terminal.
The command ls
works fine in the emacs shell.
Does anyone have an idea what might be happening.
How I can get emacs to recognize all the commands that work fine on the command line in the terminal. Is there anyway I can make the environment used by emacs shell and terminal command line identical? If so, is there any reason you would recommend against doing so? I know very little of both bash and emacs.
Thank you very much.
It's possible that the Emacs shell is working in a different environment from the one you have at the terminal command line. Compare the output of
env
when run inside the Emacs shell and when run in the terminal. Pay particular attention to the values ofPATH
.According to the following article. If you launch emacs from a shell, it will inherit the shell's environment variables. Therefore, just launch emacs from whatever shell you are most comfortable with to automatically set the environment variables. For example:
From help for
shell
command:So you can just create symlink
~/.emacs_bash
(for bash) or~/.emacs_zsh
(for zsh). Alternatively set variableexplicit-shell-file-name
to point to~/.bash_profile
or~/.bashrc
or~/.zshrc
whichever you use or you can play whichESHELL
environment variable as well.