当我在 Emacs.app 中运行 shell ( M-x shell
) 时,生成的 shell 在初始化期间不会读取(或更具体地说source
)/etc/profile
(我在那里有很多 shell 自定义)。
我已经在 ~/.MacOSX/environment.plist 中设置了路径变量,这是让 Emacs.app 读取 $PATH 所必需的,因此我进行了必要的修改以使 Emacs 适应 OS X。这似乎与 PATH 变量没有任何关系,但与 shell 本身的初始化有关。
答案1
好的,以下是我解决问题的方法。它基于StackOverflow 上对这个问题的回答这是我在 Google 上稍微混合搜索词后找到的。我将以下行添加到.bashrc
:
source /etc/profile
现在一切都正常运转。
编辑:问题发生的原因
我找到了为什么你必须明确强制重击shell 读取 /etc/profile,而不是在调用时读取。以下是来自重击手动的 (man bash
):
当启动非登录 shell 的交互式 shell 时,狂欢读取并执行命令˜/.bashrc,如果该文件存在。这可以通过使用−−norc选项。−−rc文件 文件选项将强制狂欢读取并执行命令文件代替˜/.bashrc。
可以从这段文字的书写方式(以及之前关于如何调用登录 shell 的内容)推断出,这shell.el
不会调用登录 shell。我查找了这方面的证据,shell.el
似乎确实如此,重击被调用时-我标志(交互式),但不是- 登录标志。非登录 shell 不会读取.bashrcsource /etc/profile
,所以这就是为什么你可以通过输入来解决这个问题.bashrc。