如何让emacs shell自动执行init文件?

时间:2009-06-05 21:14:30

标签: bash emacs .bash-profile

我的bash init脚本(〜/ .profile)包含重要的初始化,但是每当我在emacs中使用shell-command或编译时,都不会读取该init文件,如果没有这些初始化,我的emacs中的bash命令将会失败:(如何我强制emacs执行我用于shell命令的shell的init文件吗?

澄清:我不是在谈论M-x shell,当我将.profile符号链接到.emacs_bash时,它会正常读取我的init文件。

3 个答案:

答案 0 :(得分:22)

将初始化例程移到~/.bashrc文件

然后添加行

source ~/.bashrc

进入~/.bash_profile文件。有关何时加载哪些启动文件的详细说明,请参阅bash man page。关键是交互式非交互式 shell之间的区别,以及登录之间的区别登录 shell。

通常,在使用shell登录系统时运行.bash_profile,而在启动新shell时运行.bashrc(OS X终端应用程序在运行时是此规则的例外{每个新终端实例{1}}。有关文章形式的更多信息,请look here.

答案 1 :(得分:5)

我正在使用Mac,shell-command没有执行.bashrc,也没有执行.bash_profile,我搜索了一个解决方案来解决我的PATH问题。

把它放在你的.emacs中: (setenv“PATH”(shell-command-to-string“source~ / .bashrc; echo -n $ PATH”))

更多细节,请参阅:How to make emacs to run my ~/.bash_profile

答案 2 :(得分:2)

挖掘elisp来源;看起来像emacs中的shell命令只是在我的情况下执行bash -c“命令”。解决方案是在已经执行了.profile的shell中启动emacs(emacs&)(而不是从我的Windows管理器的GUI菜单中启动emacs)。