He compilado la última versión de emacs del código fuente (v24.2) porque la versión instalada en mi máquina es (bastante) antigua para mí (v21.3). He hecho lo usual:
$configure --prefix=$HOME
make
make install
Ahora estoy probando emacs y me di cuenta de que todavía lanza la versión anterior ... mientras $HOME/binse supone que mi ruta anulará la del sistema (ya que se antepone a $ PATH en mi .bashrcarchivo).
Mi primer pensamiento fue ver la whichsalida del comando. Y sorpresa, da el camino a los nuevos emacs. No puedo entender dónde está la discrepancia aquí. En la misma sesión, aquí están las diferentes salidas:
$ emacs --version
GNU Emacs 21.3.1
$ `which emacs` --version
GNU Emacs 24.2.1
No tengo un alias relacionado con emacs. En absoluto.
$ alias | grep emacs
$
¿Alguna idea de lo que está pasando por favor?

Respuestas:
Las tres posibilidades que me vienen a la mente:
emacs(que has marcado)emacsemacsbinario no está en la tabla hash PATH de su shell.Puede verificar si tiene una función
emacs:Y eliminarlo:
Su shell también tiene una tabla hash PATH que contiene una referencia a cada binario en su PATH. Si agrega un nuevo binario con el mismo nombre que uno existente en otra parte de su RUTA, se debe informar al shell actualizando la tabla hash:
Explicación adicional:
whichno conoce las funciones, ya que no es un bash incorporado:Este nuevo script demuestra un nuevo comportamiento de tabla hash binaria.
Aunque no lo llamé,
which catsiempre devolvería el primerocaten mi RUTA, porque no usa la tabla hash del shell.fuente
typecomando.hash -rsolucionó mi problema.Sí, no uses cuál :
PATH.Hay algo para eso. Dos, incluso:
typeycommand. La forma POSIX:En bash, también puede usar
type -p emacspara ver solo la ruta de un comando externo.Sin embargo, aquí, en
whichrealidad tiene razón. Bash mantiene información sobre la ubicación de un comando en la memoria, para que pueda ejecutar el comando más rápido la próxima vez. Has instalado un nuevoemacsejecutable en tuPATH, pero bash todavía tiene la ubicación anterior en su caché. Ejecutehash emacspara buscaremacsnuevamente ohash -rpara vaciar el caché.fuente
¿Salió e inició sesión para
.bashrcvolver a leer su archivo de inicio de sesión actualizado ? De lo contrario, el entorno de su sesión actual no se ha actualizado.fuente
`which emacs` --versionestaría de acuerdo conemacs --version, porquewhichhereda su RUTA del shell actual.