Tener algunos problemas con la PATH
configuración en Emacs que están afectando a mi entorno Haskell:
Estoy usando ZSH, y cuando voy a la línea de comando y llamo echo $PATH
, me devuelve:/Users/g/Library/Haskell/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin
Esto viene de la .zprofile
configuración donde tengo:
# Set the list of directories that Zsh searches for programs.
path=(
~/Library/Haskell/bin
/usr/local/{bin,sbin}
$path
)
Entonces, desde la línea de comando, cuando llamo which cabal
, obtengo correctamente:/Users/g/Library/Haskell/bin/cabal
Cuando inicio Emacs y voy a shell
y llamo which cabal
, obtengo: /usr/bin/cabal
lo que me está causando problemas ya que es una versión diferente.
Cuando inspecciono echo $PATH
desde Emacs shell
, veo:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/g/Library/Haskell/bin:/usr/local/sbin
No tengo idea de cómo PATH
puede ser diferente ...
¿Alguien sabe cómo lograr que mi ZSH
shell y Emacs acuerden lo mismo PATH
? Sospecho que eso es lo que controla desde dónde cabal
se está cargando.
ACTUALIZACIÓN : Ejecutando echo $SHELL
desde impresiones Emacs:/bin/zsh
ACTUALIZACIÓN 2 : Esto está en OSX .
ACTUALIZACIÓN 3 : He intentado usar el módulo exec-path-from-shell y no funciona. Todavía tengo los mismos problemas y, como efecto secundario, estropea los colores de mi tema terminal :(
ACTUALIZACIÓN 4 : He instalado Emacs a través de brew install --cocoa --srgb emacs
y ejecuto emacs que está vinculado de esta manera:
~ ❯❯❯ which emacs
/usr/local/bin/emacs
~ ❯❯❯ l /usr/local/bin/emacs
lrwxr-xr-x 1 g admin 30B 29 Jan 18:34 /usr/local/bin/emacs -> ../Cellar/emacs/24.4/bin/emacs
~ ❯❯❯ l /usr/local/Cellar/emacs/24.4/bin/emacs
-r-xr-xr-x 1 g admin 87B 29 Jan 18:34 /usr/local/Cellar/emacs/24.4/bin/emacs
chsh...
en el día para cambiar mi shell predeterminado
~/.profile
o /etc/profile
luego.
~/.zshenv
, que se obtendrán de forma coherente sin embargo, se inicia el shell (interactivo frente a no interactivo). Si exec-path-from-shell
es echar a perder sus colores del tema terminales, se puede establecer exec-path-from-shell-arguments
que nil
antes de llamar exec-path-from-shell-initialize
para asegurarse de que no se está ejecutando las partes interactivas de su configuración zsh.