如何让Emacs使用我的.bashrc文件?

Sła*_*osz 18 emacs bash path

我需要使用我$PATH的Emacs来运行一些命令.如何让Emacs使用它?我从Ubuntu存储库安装了Emacs.

san*_*inc 37

这是我使用的一个技巧,以确保我的GUI Emacs总是看到$PATH我在shell中看到的相同:

(defun set-exec-path-from-shell-PATH ()
  (let ((path-from-shell (replace-regexp-in-string
                          "[ \t\n]*$"
                          ""
                          (shell-command-to-string "$SHELL --login -i -c 'echo $PATH'"))))
    (setenv "PATH" path-from-shell)
    (setq eshell-path-env path-from-shell) ; for eshell users
    (setq exec-path (split-string path-from-shell path-separator))))

(when window-system (set-exec-path-from-shell-PATH))
Run Code Online (Sandbox Code Playgroud)

具体来说,在OS X上,图形化的Emacs不会获取用户shell的定义$PATH,因此这个技巧可以帮助我在该平台上.

更新:此代码现已发布为名为exec-path-from-shell的elisp库,MELPA中提供了可安装的软件包.


Hug*_*ues 9

更通用的解决方案(设置所有变量和别名,而不仅仅是PATH)在/sf/answers/856058311/中给出- 关键是要设置:

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

它会覆盖默认值"-c"(执行以下命令).添加"-i"强制bash shell进入交互模式,从而导致采购~/.bashrc.