【问题标题】:Emacs M-x term can't find node/coffeeEmacs M-x 术语找不到节点/咖啡
【发布时间】:2015-02-27 21:10:41
【问题描述】:

我一直在使用 mac-emacs,并且我有 M-x install-package-d 咖啡模式。我决定尝试coffee-compile-file 命令,但是当我运行它时,它失败了,抱怨它找不到coffee 命令。

所以,我在 ZSH 和 Bash 上打开了终端。 coffeenode 在两者上都运行良好。所以,拆分我的 emacs 屏幕,plink out M-x term,让 bash 加载,然后输入 coffee

bash-3.2$ coffee 
bash: coffee: command not found

奇怪。我对 node 和 npm 进行了同样的尝试。

bash-3.2$ node
bash: node: command not found
bash-3.2$ npm
bash: npm: command not found

我的问题是,为什么这种情况只发生在M-x term,我该如何解决。

【问题讨论】:

  • 大概你在 shell 初始化期间设置了路径和东西,而 M-x term 没有发生这种情况。你在哪里设置的?
  • @Etan Reisner 我检查了.zshrc.bashrc,但没有提到nodecoffee,只有rhinoclojure
  • 也许你正在使用不同的 shell 解释器。当你运行M-x term时,Emacs 会要求你选择解释器。检查您是否在 Emacs 外部的控制台中使用相同的。为此,只需在终端上输入ps
  • which coffee 输出什么(coffee 工作的地方)? $PATH 在 emacs shell 中是否不同?
  • @Akira 这确实是 bash,但有趣的是,/bin/bash 而不仅仅是 bash。我在其中运行了bash,但仍然找不到coffee

标签: node.js bash emacs


【解决方案1】:

我在@Etan Reisner 和@Akira 的帮助下找到了一个解决方案(谢谢大家!),所以我会在这里发布。我也会等待其他可能想要扩展此答案的人,然后再给予自己所有的信任。

首先,使用which coffee 可能会发现coffee 位于/usr/local/bin。出于某种原因,M-x term$PATH 不包含该目录,而终端 bash 包含。

我们可以通过将此行添加到我们的.emacs 来将/usr/local/bin 添加到emacs 的$PATH

(setenv "PATH" (concat (getenv "PATH") ":/usr/local/bin"))

现在,当我打开 M-x term 并运行咖啡时,它工作正常:

bash-3.2$ coffee
coffee> 

但是,我注意到运行 M-x coffee-repl 仍然失败,'没有这样的文件或目录:咖啡'。这可以通过将其添加到 .emacs 来解决:

(setq exec-path (append exec-path '("/usr/local/bin")))

请注意,这并不能解决 REPL 中难看的颜色转义序列的问题。啊,好吧,这已经解决了elsewhere。此外,M-x ansi-term 在颜色方面效果所以要好得多。

【讨论】:

    猜你喜欢
    • 2012-10-12
    • 2012-07-31
    • 1970-01-01
    • 2014-04-06
    • 2013-03-23
    • 1970-01-01
    • 2012-07-26
    • 2013-05-22
    • 1970-01-01
    相关资源
    最近更新 更多