En Mountain Lion, ¿cómo configuro, en un solo lugar, la variable de entorno PATH para todas las aplicaciones recién lanzadas?

En Ask Different hay muchas preguntas con respecto a la PATHvariable de entorno y cómo configurarla para aplicaciones iniciadas por un shell, por Spotlight o a través del buscador (preguntas típicas: cómo configurar PATH para aplicaciones iniciadas por Finder o cómo cambiar la variable de entorno PATH. .. ).

Las respuestas van desde shscripts/etc/paths de inicio hasta /etc/launchd.conf. Aquí estoy buscando la respuesta para una configuración unificadaPATH de todas las aplicaciones en Mac OS X Mountain Lion 10.8.2.

Respuestas (3)

Después de muchas pruebas con diferentes opciones concluyo:

¿Existe una forma unificada de configurar las PATHaplicaciones lanzadas por diferentes medios (como script de shell, Finder y Spotlight)? Pues si y no:

  • No : la configuración PATHen los scripts de inicio de shell (por ejemplo .bashrc, ) solo funciona para las aplicaciones iniciadas por shells.
  • No : la configuración PATHpara el launchdproceso actual a través launchctl setenv PATH <...>de no funciona para mí en absoluto.
  • : la configuración (y el reinicio PATHdel /etc/launchd.confsistema) hará PATHvisible lo apropiado en las aplicaciones iniciadas por Spotlight, Dock y Finder y, posteriormente, shells (locales).
  • No : los shells invocados de forma remota no heredan el entorno. (Consulte ... ¿por qué los shells remotos a través de ssh NO heredan el entorno? )

Notas para la configuración de los proyectiles:

  1. Para un funcionamiento correcto en shells locales , es importante desactivar el uso de /usr/libexec/path_helper, porque las rutas predeterminadas en /etc/pathspueden cambiar el orden de las rutas en PATH.**

  2. Para acomodar shells remotos , debe volver a importar el launchdentorno en el shell. Use algo como esto en su .bashrc:

# the vexatious path stuff
eval $(launchctl export)

Las consecuencias desafortunadas de todo el asunto son:

  • No hay forma de tener estas configuraciones unificadas por usuario. ( ~/.launchd.confno funciona.)
  • No hay una manera fácil de construir la RUTA a partir de diferentes fuentes utilizando técnicas como la expansión del directorio de inicio y otros.
Actualización: la configuración de PATH a través de no/etc/launch.conf funciona para los shells que iniciaron sesión de forma remota a través de ssh (supongo que porque no pasa su entorno que hereda de su padre al shell secundario). - Editaré la respuesta en consecuencia. sshdlaunchd
Respuesta actualizada con una solución para shells remotos.
Gran respuesta; Puede simplificar el abastecimiento del entorno launchd de la siguiente manera: eval "$(launchctl export)".
Una manera fácil de editar /etc/launchd.confes simplemente ejecutar sudo -e /etc/launchd.conf(si está familiarizado con vi) o EDITOR=nano sudo -e /etc/launchd.conf(si prefiere un editor no modal).

Ampliando la respuesta anterior , para cambiar la ruta en /etc/launchd.conf, deberá hacer lo siguiente.

  1. Asegúrese de tener privilegios de administrador.

  2. Cree un nuevo archivo de texto con el siguiente contenido, modificado para satisfacer sus necesidades:

    setenv PATH /usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/Users/YourUserName/bin
    
  3. Guárdelo en su directorio de inicio como launchd.conf.

  4. Abra Terminal.app (o su sustituto favorito) y escriba:

    sudo mv ~/launchd.conf /etc

    Dependiendo de su uso anterior del sudocomando, puede recibir un breve mensaje de "tenga cuidado al hacer lo que está haciendo", pero de cualquier manera deberá ingresar su contraseña. Todo lo que hace el comando es mover el archivo al /etcdirectorio, al que no se puede acceder directamente al guardar un archivo en TextEdit, por ejemplo. sudo(abreviatura de "Superusuario DO") se utiliza porque se necesitan privilegios de administrador para escribir en ese directorio.

  5. Reinicie su computadora.

Y deberías estar listo. ¡Buena suerte!

Gracias por los detalles, pero la pregunta no era sobre cómo modificar launchd.conf, sino sobre cómo todas las aplicaciones obtienen la misma variable PATH de manera unificada.
Correcto, pero originalmente busqué la pregunta tratando de averiguar cómo configurar PATHmis aplicaciones GUI, y pensé que ayudaría a las pobres almas que no supieran cómo efectuar el cambio...
Tienes un punto válido aquí; aún así, creo que integrar su información en la respuesta es la mejor opción. - Creo que este hilo de comentarios se convierte en una meta discusión, así que lo abrí en meta.stackoverflow como Qué hacer con una respuesta adicional...
en realidad, ¿no debería haber estado en meta.apple.stackexchange.com?
De hecho, meta.apple.stackexchange.com habría sido el lugar correcto. solo que no sabia que existia...

Puede probar https://github.com/ersiner/osx-env-sync .

Maneja aplicaciones tanto de línea de comando como de GUI desde una sola fuente . Y funciona con la última versión de OS X (Yosemite).

Lo que simplemente automatiza la otra respuesta usando el bit que dice que no funciona, por ejemplo, launchctl setenv PATH <...>
@Mark Esto no tiene nada que ver con la automatización de los pasos de una respuesta aquí. Éste utiliza un agente de lanzamiento. Te sugiero que lo pruebes.
La solución aceptada launchdtambién utiliza el sistema. Su solución tiene los mismos problemas que se indican en la respuesta aceptada.
@halloleo ¿Realmente lo has probado? ¿Y en qué versión de OS X?