¿Cómo cambiar la variable de entorno PATH a OS X 10.8 Mountain Lion que será visible para las aplicaciones GUI? [duplicar]

Probé todos los métodos que escuché para establecer variables de entorno en OS X 10.8, pero ninguno de ellos parece funcionar.

Para probar, ejecute un script bash desde dentro de una aplicación de interfaz gráfica de usuario como Eclipse o IntelliJ IDEA.

#!/bin/bash
set|grep PATH

Cosas que probé y que no funcionan incluso después de reiniciar:

  • /etc/pathsy/etc/paths.d/something
  • /etc/launchd.conf
  • ~/.bash_profile
  • ~/.MacOSX/environment.plist(plist binario hecho como se recomienda)
  • ejecutándose launchctl setenv PATH $PATHdesde la línea de comando, se suponía que esto actualizaría la RUTA para las aplicaciones GUI, al menos para la sesión actual. Adivina qué, sin cambios.

Parece que PATH siempre es PATH=/usr/bin:/bin:/usr/sbin:/sbinpara aplicaciones GUI.

¿Está de acuerdo con una solución que establezca la ruta bash o realmente necesita cambiar el valor de launchd de la ruta base para todos los procesos?
Necesito cambiar la RUTA utilizada por las aplicaciones GUI, para terminal/bash/... Ya tengo un gran conjunto de soluciones de trabajo.
No sé por qué eclipse y otros no solo admiten variables de entorno de tiempo de ejecución, por lo que cada desarrollador de Java en Mac no necesita preocuparse por establecer la ruta o el suministro de las variables deseadas en cada proyecto.

Respuestas (4)

Con Mountain Lion /etc/launchd.confes donde debe establecer la ruta de las aplicaciones GUI. Recuerde que no es un archivo de script; solo admite launchctlcomandos, por lo que debe escribir algo como:

setenv PATH /new/path:/usr/bin:/bin:/usr/sbin:/sbin

Tenga en cuenta también que no admite sustituciones de variables de entorno de shell (como $PATH), por lo que deberá establecer cada ruta que desee incluir. Es una buena idea mantener las rutas originales que mencionaste ( /usr/bin:/bin:/usr/sbin:/sbin).

Deberá reiniciar después de cambiar (o crear) el archivo para que los cambios surtan efecto.

Esto funcionó para mí en 10.8.2 para establecer una RUTA que se podía usar con Keyboard Maestro.
La página de manual dice que puede usar $HOME/.launchd.conf pero eso no funcionó para mí. Usar /etc/launchd.conf lo hizo. estoy en 10.8.4
No funciona para mí:-bash: setenv: command not found
Si alguien se confundió como Colas, setenves un launchctlcomando, así que lo usa como launchctl setenv.

Funciona si llama a la aplicación GUI desde la Terminal:

PATH=/this/is/kind/of/crazy:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin /Applications/Automator.app/Contents/MacOS/Automator 

ingrese la descripción de la imagen aquí

No es realmente agradable ni cómodo, pero hace el trabajo si es necesario.

En breve NO HAY MANERA. No estoy dispuesto a hacer esto, solo funcionará algunas veces. La aplicación también se puede iniciar al hacer clic en un archivo.
Como dije, no es realmente bueno, pero puede funcionar hasta que Apple solucione el problema (porque debería ser posible con launchctl).

Preparé otra solución, inspirada en patrix one here , que con suerte es un poco menos dolorosa. Abra Automator, seleccione una aplicación como objetivo y elija Execute Shell script(o como se llame, en alemán es "Shell-Skript ausführen" como se puede ver arriba) como acción. En el script, simplemente escriba

launchctl setenv FOO1 bar1
[...]
launchctl setenv FOOn barn
open -a YourApplicationHere

Luego guarde todo donde desee, y si necesita ejecutar YourApplicationHere , abra la "aplicación de automatización" creada en su lugar.

Probé esto con TerminalYourApplicationHere , y vi que FOO estaba realmente configurado para bloquear . Espero que funcione para otros también.launchctl export

Finalmente, si usa esta solución para sus variables de entorno, en lugar de escribir las launchctlcosas en el script de shell, puede simplemente llamar /Users/Shared/conflaunchd.sh(que debe inventar primero, junto con el archivo que describe las variables).

Supuestamente, launchctlproporciona PATHa las aplicaciones GUI. Para establecer la ruta a la ruta de shell, agregue lo siguiente a su archivo rc de shell después de configurar su ruta:

launchctl setenv PATH $PATH
Desafortunadamente esto no funciona :-(
Permitimos respuestas que hagan un esfuerzo de buena fe para abordar la pregunta. Incluso permitimos respuestas incorrectas y dejamos que la votación hable por la corrección. Comentar sin hacerlo personal es la mejor manera de hacer un agujero en un argumento defectuoso en lugar de desalentar los intentos de respuesta.