我需要使用我$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中提供了可安装的软件包.
更通用的解决方案(设置所有变量和别名,而不仅仅是PATH
)在/sf/answers/856058311/中给出- 关键是要设置:
(setq shell-command-switch "-ic")
Run Code Online (Sandbox Code Playgroud)
它会覆盖默认值"-c"
(执行以下命令).添加"-i"
强制bash shell进入交互模式,从而导致采购~/.bashrc
.