9 votos

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

En Ask Different hay muchas preguntas sobre la variable de entorno PATH y cómo configurarla para aplicaciones lanzadas por una shell, por spotlight o a través del buscador (preguntas típicas: Cómo configurar PATH para aplicaciones lanzadas por Finder o Cómo cambiar la variable de entorno PATH...).

Las respuestas van desde scripts de inicio sh hasta /etc/paths a /etc/launchd.conf. Aquí estoy en busca de una respuesta para una configuración unificada de PATH para todas las aplicaciones bajo Mac OS X Mountain Lion 10.8.2.

14voto

Josh Puntos 205

Después de muchos intentos con diferentes opciones, concluyo:

¿Existe una manera unificada de configurar la RUTA para las aplicaciones lanzadas de diferentes formas (como script de shell, Finder y Spotlight)? Bueno, sí y no:

  • No: Configurar la RUTA en los scripts de inicio de shell (por ejemplo, .bashrc) solo funciona para aplicaciones lanzadas por shells.
  • No: Configurar la RUTA para el proceso actual de launchd a través de launchctl setenv PATH <...> no funciona en absoluto para mí.
  • : Configurar la RUTA en /etc/launchd.conf (y reiniciar el sistema) hará que la RUTA apropiada sea visible en las aplicaciones lanzadas por Spotlight, Dock y Finder y posteriormente (en) shells locales.
  • No: Las shells invocadas de forma remota no heredan el entorno. (Ver ...por qué las shells remotas a través de ssh NO heredan el entorno...)

Notas para la configuración de shells:

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

  2. Para acomodar las shells remotas necesitas volver a importar el entorno de launchd en la shell. Utiliza algo como esto en tu .bashrc:

    el irritante asunto de la ruta

    eval $(launchctl export)

Las consecuencias desafortunadas de todo el problema son:

  • No hay forma de tener estas configuraciones unificadas a nivel de usuario. (~/.launchd.conf no funciona.)
  • No hay una forma fácil de construir la RUTA a partir de diferentes fuentes utilizando técnicas como la expansión del directorio de inicio, etc.

0 votos

Actualizar: Establecer PATH a través de /etc/launch.conf no funciona para shells conectadas de forma remota a través de ssh (asumo que porque el sshd no pasa su entorno heredado de su padre launchd al shell hijo). - Editaré la respuesta en consecuencia.

0 votos

Respuesta actualizada con una solución para shells remotos.

1 votos

Gran respuesta; Puedes simplificar el proceso de obtención del entorno de launchd de la siguiente manera: eval "$(launchctl export)".

3voto

Jihane Puntos 6

Expandiendo la respuesta anterior, para cambiar la ruta en /etc/launchd.conf, tendrás que hacer lo siguiente.

  1. Asegúrate de tener privilegios de Administrador.

  2. Crea un nuevo archivo de texto con el siguiente contenido, modificado para adaptarse a tus necesidades:

    setenv PATH /usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/Users/YourUserName/bin
  3. Guárdalo en tu directorio personal como launchd.conf.

  4. Abre Terminal.app (o tu sustituto favorito) y escribe:

    sudo mv ~/launchd.conf /etc

    Dependiendo de tu uso previo del comando sudo, es posible que recibas un breve mensaje de "ten cuidado con lo que estás haciendo", pero de cualquier manera tendrás que ingresar tu contraseña. Todo lo que hace el comando es mover el archivo al directorio /etc, el cual no es accesible directamente al guardar un archivo en TextEdit, por ejemplo. sudo (abreviatura de "Super User DO") se utiliza porque se necesitan privilegios de Administrador para escribir en ese directorio.

  5. Reinicia tu computadora.

Y deberías estar listo. ¡Buena suerte!

0 votos

Gracias por los detalles, pero la pregunta no era acerca de cómo modificar launchd.conf, sino más bien sobre cómo todas las aplicaciones obtienen la misma variable PATH de manera unificada.

0 votos

Correcto, pero originalmente busqué la pregunta tratando de averiguar cómo establecer la RUTA para mis aplicaciones GUI, y pensé que podría ayudar a cualquier alma desafortunada que no sepa cómo realizar el cambio...

0 votos

Tienes un punto válido aquí; aún así, creo que integrar tu información en la respuesta es la mejor opción. - Creo que este hilo de comentarios se está convirtiendo en una discusión meta, así que lo he abierto en meta.stackoverflow como Qué hacer con una respuesta adicional...

-2voto

Ersin Er Puntos 107

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

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

0 votos

¿Cuál solo automatiza la otra respuesta usando la parte que él dice que no funciona (por ejemplo, launchctl setenv PATH <...>)?

0 votos

@Mark Esto no tiene nada que ver con automatizar pasos de una respuesta aquí. Esta utiliza un Launch Agent. Te sugiero que lo intentes.

0 votos

La solución aceptada también utiliza el sistema launchd. Tu solución tiene los mismos problemas que se indican en la respuesta aceptada.

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