91 votos

Cómo configurar el PATH para las aplicaciones lanzadas por el Finder

Las aplicaciones lanzadas a través del Finder parecen no respetar el PATH establecido en .bash_profile . Así que cuando intento ejecutar código desde un IDE (Intellij) ya no tengo acceso a los programas en /usr/local/bin , que normalmente se añade a mi ruta en el Terminal.

Al parecer, .MacOSX/environment.plist solía ser el camino para hacer esto, pero ya no funciona en Lion.

¿Cómo se puede establecer el PATH para las aplicaciones lanzadas por el Finder?

0 votos

¿Estás seguro de que tu solución aceptada funciona en 10.8?

1 votos

@SorinSbarnea (sé que esto es viejo, pero) puedo verificar que la respuesta actualmente aceptada me funciona en OS X 10.8.3, cuando también uso el sugerencia de hack de reinicio del muelle . (Sin embargo, estoy configurando una variable de entorno diferente, no $PATH en caso de que eso importe).

0 votos

Ver también < stackoverflow.com/questions/829749/ >. Es prácticamente un duplicado.

43voto

Manrico Corazzi Puntos 6458

Si estás en 10.7 y no en 10.8, la solución de abajo funciona bien:

Tenía el mismo problema con eclipse, pero ahora he añadido, por ejemplo, lo siguiente a mi .bash_profile y luego funcionó.

export PATH=some_path:another_path
launchctl setenv PATH $PATH

En caso de que quieras dejar la ruta original intacta utiliza

p=$(launchctl getenv PATH)
launchctl setenv PATH /my/new/path:$p

en su lugar (o simplemente launchctl setenv PATH /my/new/path:$(launchctl getenv PATH) ).

Nota: El cambio del PATH de launchctl no tendrá efecto hasta que el Dock se "reinicie". Un nuevo proceso del Dock se iniciará automáticamente después de que el actual sea eliminado con el comando:

killall Dock

1 votos

Terminé usando "launchctl setenv PATH $PATH". Añadiendo la ruta existente de launchctl a través de "$p" termina repitiendo la ruta cada vez que se abre un shell.

0 votos

También vale la pena notar que hasta que no haya iniciado un shell (a través de la Terminal) launchctl tendrá la ruta por defecto, y la ruta personalizada no estará disponible. Esto me volvió un poco loco tratando de depurar las cosas hasta que me di cuenta de lo que estaba pasando. Si iniciaba Intellij antes de abrir un shell, la ruta sería incorrecta. Parece que la verdadera solución aquí es configurar launchctl en todo el sistema, y no a través de la shell de inicio de sesión por algún usuario.

4 votos

Este no funciona en OS X 10.8 - probado con Eclipse e IntelliJ - funcionando set|grep PATH de ellos siempre volverá PATH=/usr/bin:/bin:/usr/sbin:/sbin

28voto

brki Puntos 121

En OS X 10.10 Yosemite, he utilizado este comando:

sudo launchctl config user path <my path setting>

Tenga en cuenta que su establece el PATH de launchtl para todos los usuarios . Esto funcionó bien para mi caso de uso. Tenga en cuenta que se le pedirá que reinicie su máquina para que los efectos se produzcan.

Debe reiniciar todas las aplicaciones para que esto tenga efecto. (No se aplica a las aplicaciones que se reabren al iniciar sesión después de reiniciar). (Gracias @Brecht Machiels.)

2 votos

Esto no parece tener efecto en la variable de entorno PATH de las aplicaciones que se reabren al iniciar la sesión (que estaban abiertas al cerrarse).

7 votos

Esta respuesta me ha funcionado. En concreto, para acceder al ejecutable gestionado por Brew, tuve que sudo launchctl config user path /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin y reiniciar.

1 votos

Esta es la mejor respuesta aquí para añadir /usr/local/bin para aplicaciones basadas en Homebrew. Por favor, voten esta respuesta. También funciona en 10.11 y 10.12 (no lo he probado en 10.13). No hay necesidad de meterse con environment.plist en la mayoría de los casos.

22voto

Manrico Corazzi Puntos 6458

Para responder a su pregunta a su "nuevo" problema, he decidido escribir otra respuesta - porque es más fácil de explicar con muestras.

Una manera de cargar las variables de entorno en el inicio de su herramienta (IDE) de elección es como se puede hacer con eclipse - Creo que debe haber una estructura similar en su herramienta (IDE) también.

Cómo se puede hacer en eclipse - https://stackoverflow.com/questions/829749/launch-mac-eclipse-with-environment-variables-set

(ligeramente reescrito sobre las variables de entorno)

Cree un archivo de texto vacío llamado "eclipse.sh" en el directorio del paquete de aplicaciones Eclipse /Applications/Eclipse.app/Contents/MacOS

Abra el eclipse.sh en un editor de texto e introduzca el siguiente contenido:

#!/bin/sh

. ~/.bash_profile

logger "$(dirname \"$0\")/eclipse"

exec "$(dirname \"$0\")/eclipse" "$@"

En el terminal, establezca la bandera ejecutable del shell script eclipse.sh, es decir:

chmod +x /Applications/Eclipse.app/Contents/MacOS/eclipse.sh

Abra el Info.plist de Eclipse.app y cambie el valor de la clave CFBundleExecutable de eclipse a eclipse.sh.

MacOS X no detecta automáticamente que el Info.plist de Eclipse.app ha cambiado. Por lo tanto, es necesario forzar la actualización de la base de datos de LaunchService en el Terminal utilizando el comando lsregister command :

/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister -v -f /Applications/Eclipse.app

La próxima vez que lances Eclipse.app desde el Dock o desde el Finder las variables de entorno deberían estar configuradas.

0 votos

+1 por una explicación clara y precisa, y por el hecho de que más de seis años después, esto sigue funcionando con High Sierra, 10.13.x.

0 votos

Todavía trabaja en Big Sur, para que conste.

14voto

diimension Puntos 1049

En Mountain Lion todos los /etc/paths y /etc/launchd.conf La edición no tiene ningún efecto.

Los foros de desarrolladores de Apple dicen:

"Cambia el Info.plist de la propia .app para que contenga un "LSEnvironment" con las variables de entorno que quieras.

~/.MacOSX/environment.plist ya no es compatible".

Así que edité directamente la aplicación Info.plist (haga clic con el botón derecho en "AppName.app" (en este caso SourceTree) y luego " Show package contents ")

Show Package Contents

y añadimos un nuevo par clave/dict llamado:

<key>LSEnvironment</key>
<dict>
     <key>PATH</key>
     <string>/Users/flori/.rvm/gems/ruby-1.9.3-p362/bin:/Users/flori/.rvm/gems/ruby-1.9.3-p362@global/bin:/Users/flori/.rvm/rubies/ruby-1.9.3-p326/bin:/Users/flori/.rvm/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:</string>
</dict>

(ver: Documentación de LaunchServicesKeys en Apple )

enter image description here

ahora la App (en mi caso SourceTree) utiliza la ruta dada y funciona con git 1.9.3 :-)

P.D.: Por supuesto, tiene que ajustar la entrada de la ruta a sus necesidades específicas.

0 votos

¿Es esto cierto? Veo muchos posts con información contradictoria, algunos de los cuales son claramente antiguos, pero otros parecen recientes. Ni siquiera tengo (en 10.8.2) una /etc/launchd.conf de todos modos. Es de suponer que, aunque las normas no indiquen que las aplicaciones debe utilizan sus archivos Info.plist para las rutas, todavía podrían estar utilizando otros archivos -- /etc/launchd.conf , /etc/paths/ o /etc/paths.d/* o `~/.MacOSX/environment.plist. Es seguro decir entonces que, en la práctica En el caso de Mountain Lion, las rutas de acceso a las aplicaciones de la interfaz gráfica de usuario pueden establecerse en cualquiera de estos archivos.

3 votos

Este Info.plist fue lo único que me funcionó, después de probar lauchd.conf, etc/rutas etc con mi Maverics y eclipse. En realidad esto no funcionó inmediatamente también, usted necesita recordar dos cosas: 1. ejecutar /System/Library/Frameworks/CoreServices.framework/Frameworks‌​/LaunchServices.fram‌​ework/Support/lsregi‌​ster -v -f /Applications/eclipse/Eclipse.app como se indica en otra respuesta, después de cambiar el plist y 2. añadir ruta completa allí, no se puede utilizar el PATH existente como en su perfil scripts.

0 votos

Esto funciona en Sierra (10.12). Pero todavía es necesario ejecutar el lsregister comando, tal y como señala @JaakL.

2voto

Adam Taylor Puntos 1777

En Mountain Lion (10.8.4), $PATH se trata de alguna manera especial. launchctl setenv PATH /your/path:/here no tiene ningún efecto sobre el $PATH en instancias de Terminal.app o Emacs.app lanzadas posteriormente desde el Dock o desde el Finder (mientras que launchctl setenv SPONG foo funciona bien). También $HOME/.launchd.conf no funciona. /etc/launchd.conf es la única forma que he encontrado para que el PATH se configure correctamente en todas partes. Desgraciadamente, no se pueden utilizar envars como $HOME allí, así que todos los usuarios de mi portátil tienen /Users/nb/bin en su $PATH . Sólo soy yo, así que no me importa.

0 votos

Debería ver que el proceso de la Terminal recoge el PATH pero: cuando se crea un nuevo terminal se inicia un shell de inicio de sesión, que -si se utiliza bash- ejecuta /etc/profile que inicializa PATH al valor devuelto por /usr/libexec/path_helper . Si elige Shell > Nuevo comando y ejecutar env (no en un shell) deberías encontrar que PATH es el valor que se establece a través de launchd.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X