我在Mac OS X 10.5.8上工作。我正在尝试学习emacs。我是新手,今天尝试从emacs中输入shell命令。我输入了pdflatex filename
。但是,它给我一个错误说
/bin/bash: pdflatex: command not found
我安装了LaTeX,并且pdflatex可以在终端的命令行中正常工作。
我在lsd
文件中定义的命令.bash_profile
出现类似错误。这在终端的命令行上也能正常工作。
命令ls
在emacs shell中运行正常。
有没有人知道可能会发生什么。
如何让emacs识别终端中命令行正常工作的所有命令。 无论如何我可以使emacs shell和终端命令行使用的环境相同吗? 如果是这样,你有什么理由建议不要这样做吗?我对bash和emacs都知之甚少。
非常感谢。
答案 0 :(得分:8)
Emacs shell可能在与终端命令行上的环境不同的环境中工作。比较在Emacs shell中运行时和在终端中运行时env
的输出。请特别注意PATH
。
答案 1 :(得分:0)
来自shell
命令的帮助:
使用的程序来自变量'explicit-shell-file-name', 或者(如果为零)来自ESHELL环境变量, 或者(如果是零)来自'shell-file-name'。 如果存在'〜/ .emacs_SHELLNAME'文件或'〜/ .emacs.d / init_SHELLNAME.sh', 它作为初始输入给出(但由于时间原因,这可能会丢失 错误,如果shell在启动时丢弃输入)。 缓冲区处于Shell模式,提供发送输入的命令 并控制shell的subjobs。请参阅'shell-mode'。 另请参见变量'shell-prompt-pattern'。
因此,您只需创建符号链接~/.emacs_bash
(对于bash)或~/.emacs_zsh
(对于zsh)。或者,将变量explicit-shell-file-name
设置为指向~/.bash_profile
或~/.bashrc
或~/.zshrc
,无论您使用哪个,也可以使用哪个ESHELL
环境变量。
答案 2 :(得分:0)
根据以下article。如果从外壳启动emacs,它将继承外壳的环境变量。因此,只需从您最熟悉的任何外壳启动emacs即可自动设置环境变量。例如:
cd /file_path
emacs file_name