问题
I am using OS X 10.8, and I used brew to install a more recent version of emacs than the one shipped with OS X.
The newer emacs binary is installed in /usr/local/bin (24.2.1), and the old "shipped-with-osx" one in /usr/bin (22.1.1).
I updated my $PATH env variable by prepending /usr/local/bin to it. It works fine in my shell (ie. typing emacs runs the 24.2.1 version), but when git opens the editor, the emacs version is 22.1.1.
Isn't git supposed to use $PATH to find the editor I want to use ?
Additional informations:
$ type -a emacs
emacs is /usr/local/bin/emacs
emacs is /usr/bin/emacs
emacs is /usr/local/bin/emacs
$ env
PATH=/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin
SHELL=/bin/zsh
PAGER=most
EDITOR=emacs -nw
_=/usr/bin/env
Please note that I'd prefer not to set the absolute path of my editor directly in my git conf, as I use this conf across multiple systems.
EDIT: Here's an bit of my .zshrc:
# Mac OS X
if [ `uname` = "Darwin" ]; then
# Brew binaries
PATH="/usr/local/bin":"/usr/local/sbin":$PATH
else # Everyone else (Linux)
# snip
fi
So, yes, I could add a line export EDITOR='/usr/local/bin emacs -nw' in the first if, but I'd like to understand why git is not using my PATH variable :)
回答1:
Installing git 1.8.0 fixed the issue.
Old version was 1.7.9.6 (Apple Git-31.1). This is weird as I didn't find any references to this kind of problem in the changelogs.
回答2:
The simplest fix is to set the full path in the environment variable.
OSX uses bash(1) by default, so stick export EDITOR=/usr/local/bin/emacs -nw somewhere in your .bash_profile to set the variable for all interactive bash shells.
来源:https://stackoverflow.com/questions/13301260/git-is-not-using-the-first-editor-in-my-path