我的bash init脚本(〜/ .profile)包含重要的初始化,但是每当我在emacs中使用shell-command或编译时,都不会读取该init文件,如果没有这些初始化,我的emacs中的bash命令将会失败:(如何我强制emacs执行我用于shell命令的shell的init文件吗?
澄清:我不是在谈论M-x shell,当我将.profile符号链接到.emacs_bash时,它会正常读取我的init文件。
答案 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”))
答案 2 :(得分:2)
挖掘elisp来源;看起来像emacs中的shell命令只是在我的情况下执行bash -c“命令”。解决方案是在已经执行了.profile的shell中启动emacs(emacs&)(而不是从我的Windows管理器的GUI菜单中启动emacs)。