让Emacs遵循我的默认shell和选项

15

我想让我的Emacs shell模仿标准终端的会话。基本上,我希望它尊重与命令提示符相同的PATH。

到目前为止,我有一些问题:

  • 找不到PATH,以下是我使用的修复方法。
  • 我尝试的另一个修复方式在各个地方产生了ASCII颜色代码。

我在mwilliams.el文件中有以下内容。前几行使我在M-x shell中可以访问/usr/local/bin,这解决了一半的问题,而最后几行让我运行Zsh,但我的提示符非常混乱。

(setenv "PATH" (concat (getenv "PATH") ":/usr/local/bin"))
(setq exec-path (append exec-path '("/usr/local/bin")))


(defun shell ()
  (interactive)
  (ansi-term "/bin/zsh"))

通过上述操作,我在执行 M-x shell 时始终获得以下结果。

4m\342/236/234 

使用的模式是:(术语:char run yas)

据我所知,它没有遵循我的Zsh主题中某些ASCII颜色代码。不过我确实看到一些颜色出现了;所以它已经完成了一半。我最好的猜测是我需要让它尊重我的.zshrc文件,其中包含有关我的主题和PATH的信息。

我刚开始接触Emacs,获得一个可靠的shell是我在将我的日常工作(和其他所有东西)迁移到Emacs之前需要做的最后几件事情之一。

我在OSX Snow Leopard中运行Emacs 23.1(9.0)。

2个回答

17

我不使用zsh,但我在zsh FAQ中找到了这个方法并尝试了一下。我得到了一个有色彩的ls,没有奇怪的字符。

3.10:为什么zsh不再在Emacs shell模式下工作?
阅读更多:http://www.faqs.org/faqs/unix-faq/shell/zsh/#ixzz0TyTJsHMq

另一种方法是将

#!/bin/sh 
TERM=emacs exec zsh

将以下代码添加到文件~/bin/eshell中,然后执行chmod +x ~/bin/eshell。最后告诉emacs使用这个shell:
(setenv "ESHELL" (expand-file-name "~/bin/eshell"))

~/.emacs


当我这样做时,我会收到“进程 shell 异常退出,代码为 1\n打开终端失败:找不到 terminfo 数据库”的错误。你们两个有没有遇到过这种情况?如果有,你们能够解决吗? - Bo Jeanes

1

对于路径,有一个 exec-path-from-shell 的包(仅适用于OS X)。

它从shell获取$MANPATH$PATHexec-path ,并将它们设置为emacs。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接