有没有办法让我的emacs在运行shell命令时识别我的bash别名和自定义函数?

Pal*_*han 31 emacs bash shell environment-variables

在我的shell环境中,我有别名和自定义函数.当我在emacs的实例(我总是使用emacs -nw)并执行shell命令(Mx!)时,我无法使用它们.这是有道理的,因为我想它启动它自己的子shell来做这些..但有没有办法(也许在我的.emacs中)让这个工作?也许即使它在执行任何shell命令之前默认采购环境?

Kei*_*wer 34

以下是我对我认为相关问题的评论:

我认为M-x shell-commandM-x compile都是通过call-process在劣质shell中执行命令.在.emacs中尝试以下内容(或仅评估):

(setq shell-file-name "bash")
(setq shell-command-switch "-ic")
Run Code Online (Sandbox Code Playgroud)

我注意到在评估了上述内容之后,.bashrc别名被M-xshell-command和M-xcompile使用,即

M-x编译RET your_alias RET

应该工作.

我的环境:Emacs 24.1(预测试rc1),OSX 10.7.3

资源

  • @PalaceChan:`-i` 用于交互,`-c` 告诉 bash 读取后面的任何命令(所以 Emacs 在它的 shell 调用中使用任何命令)。 (2认同)
  • @PalaceChan给出了你的下一个问题(http://stackoverflow.com/questions/15918614/how-to-run-shell-commands-in-emacs-on-ubuntu-while-avoiding-a-bash-job-control-e ?lq = 1)询问为什么这会给你一个错误,它是如何工作的? (2认同)
  • (终结者中的Emacs 24.4.1)这对我来说非常有用,但是在输出之前我得到了消息:bash:无法设置终端进程组(-1):不适合设备bash的ioctl:此shell中没有作业控制 (2认同)