From 63a88bfb4f2e5f9a7d915bbe6a0af3e71da6c2d7 Mon Sep 17 00:00:00 2001 From: Steve Purcell Date: Sat, 21 Nov 2015 11:21:27 +1300 Subject: [PATCH] Warn users if the "-i" arg makes a difference given their startup files --- exec-path-from-shell.el | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/exec-path-from-shell.el b/exec-path-from-shell.el index 1847c67..a1f656b 100644 --- a/exec-path-from-shell.el +++ b/exec-path-from-shell.el @@ -188,9 +188,19 @@ variables such as `exec-path'." As a special case, if the variable is $PATH, then `exec-path' and `eshell-path-env' are also set appropriately. The result is an alist, as described by `exec-path-from-shell-getenvs'." - (mapc (lambda (pair) - (exec-path-from-shell-setenv (car pair) (cdr pair))) - (exec-path-from-shell-getenvs names))) + (let ((pairs (exec-path-from-shell-getenvs names)) + (without-minus-i (remove "-i" exec-path-from-shell-arguments))) + + ;; If the user is using "-i", we warn them if it is necessary. + (unless (eq exec-path-from-shell-arguments without-minus-i) + (let* ((exec-path-from-shell-arguments without-minus-i) + (alt-pairs (exec-path-from-shell-getenvs names))) + (unless (equal pairs alt-pairs) + (warn "You appear to be setting environment variables in your .bashrc or .zshrc: those files are only read by interactive shells, so you should instead set environment variables in startup files like .bash_profile or .zshenv. See the man page for your shell for more info. In future, exec-path-from-shell will not read variables set in the wrong files.")))) + + (mapc (lambda (pair) + (exec-path-from-shell-setenv (car pair) (cdr pair))) + pairs))) ;;;###autoload (defun exec-path-from-shell-copy-env (name)