Configuración de la variable de entorno PATH de todo el sistema en Mavericks

36

En versiones anteriores del sistema operativo, se podía establecer la variable de entorno PATH en todo el sistema en /etc/launchd.conf para que esté disponible para todas las aplicaciones (no solo la línea de comandos).

En Mavericks parece que esto ya no se usa.

¿Hay otra técnica para hacer esto en los disidentes?

    
pregunta Tom 23.10.2013 - 18:50

8 respuestas

41

Yosemite

/etc/launchd.conf ya no es compatible con 10.10. Ver man launchctl :

  

El archivo /etc/launchd.conf ya no se consulta para que los subcomandos se ejecuten durante el tiempo de inicio temprano; esta funcionalidad se eliminó por motivos de seguridad.

Ahora, por ejemplo, puedes guardar esta lista como ~/Library/LaunchAgents/my.startup.plist :

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>Label</key>
  <string>my.startup</string>
  <key>ProgramArguments</key>
  <array>
    <string>sh</string>
    <string>-c</string>
    <string>launchctl setenv PATH /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin</string>
  </array>
  <key>RunAtLoad</key>
  <true/>
</dict>
</plist>

El comando launchctl setenv se ejecuta como usuario, por lo que solo se aplica a los procesos iniciados en el dominio de usuario.

Este método no se aplica a las aplicaciones que se vuelven a abrir al iniciar sesión si se marca "Volver a abrir ventanas al volver a iniciar sesión".

Mavericks y anteriores

En 10.9 y anteriores, por ejemplo, puedes ejecutar

echo setenv PATH /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin|sudo tee -a /etc/launchd.conf

y luego reinicie para aplicar los cambios.

Otros métodos

/etc/paths y /etc/paths.d/ se aplican solo (o principalmente) a shells. Las líneas en /etc/paths y /etc/paths.d/* se agregan a la ruta mediante path_helper , que se ejecuta desde /etc/profile , /etc/zshenv y /etc/csh.login . No conozco ningún otro programa aparte de shells que consideren /etc/paths o /etc/paths.d/ .

~/.MacOSX/environment.plist dejó de funcionar en 10.8.

    
respondido por el user495470 25.10.2013 - 17:48
12

Hay una manera mucho más fácil. Coloque un archivo de texto en la carpeta /etc/paths.d/ . En este archivo de texto, ingrese la ruta deseada Y una nueva línea. La mejor manera es crear un nuevo archivo para cada ruta.

En mi sistema, hay un archivo llamado MySQL con el texto '/ usr / local / mysql / bin' y una nueva línea.

    
respondido por el CAryaSil 24.10.2013 - 12:28
3

Es posible que pueda establecer variables de entorno en el archivo /etc/launchd-user.conf ...

En Mavericks, pude configurar una variable de entorno en el archivo usando la línea:

setenv TEST test

Después de un nuevo arranque, se establece $TEST de /etc/launchd-user.conf.

Editar

Es posible que la sintaxis del archivo en /etc/launchd.conf no sea válida. ¿Puede publicar el contenido de ese archivo para su examen?

Por lo que veo, la configuración de la variable PATH en /etc/launchd.conf funciona normalmente. Sin embargo, launchd no realiza expansión de parámetros . Por lo tanto, si tiene una entrada como setenv PATH $PATH:/usr/local/bin , su ruta resultante se configurará como " $PATH:/usr/local/bin " (nota: no es el valor de PATH, pero el texto "$ PATH")

    
respondido por el Eddie Kelley 23.10.2013 - 19:56
0

en mi instalación de Mavericks, agregar "setenv PATH blablabla" a /etc/launchd.conf no funcionó después de reiniciar

así que agregué mi nueva ruta al final de / etc / path, que funcionó.

    
respondido por el George Dima 04.11.2013 - 03:07
0

Descubrí que setenv PATH todavía funciona para mí para Terminal y aplicaciones, pero se rompió en los scripts de shell, se inició directamente haciendo clic o en Abrir con en Terminal desde, por ejemplo, Finder. Es muy extraño. Otras variables de entorno establecidas en /etc/launchd.conf trabajo.

Para corregirlo para los scripts de shell ejecutados directamente, duplicé la configuración de PATH en ~/.bash_profile .

    
respondido por el DKroot 07.03.2014 - 17:28
0

La edición de /etc/paths.d o el uso de .bash_profile no funcionó para mí, sin embargo, como lo sugirió otra persona (vine aquí por su respuesta, ¡¿pero no la encontré de nuevo ?!), edité /etc/paths que funciona para mí

En mi caso, agregué a android-tool adb y android a los comandos de terminal apuntando a sus rutas sdk ( adb se ha movido a otro directorio en la actualidad) que se parecen a

/usr/local/bin
...
/Applications/adt-bundle-mac/sdk/platform-tools  //new entries
/Applications/adt-bundle-mac/sdk/tools
    
respondido por el longilong 22.05.2014 - 11:50
0

SWEET, agregando ese XML a ~ / Library / LaunchAgents / setenv.SVN.plist permitió a BBEdit usar los binarios de subversión que instalé en / opt.

<clip>
<string>launchctl setenv PATH /opt/subversion/bin:$PATH</string>
<clip>
    
respondido por el Mark M 22.05.2015 - 06:26
-1

Simplemente agregue su 'bin' (la ruta que desea agregar) ruta al archivo / etc / paths - ¡reinicie o vuelva a iniciar sesión!

sudo vi /etc/paths 
(create a file (paths file) if it does't exist, I am using 'vi' editor, you can use your own as super user )
then, add your bin directory path like below 

/usr/local/mysql/bin
/usr/local/apache-ant-1.9.3/bin
/usr/local/gradle-1.11/bin

guarde el archivo y vuelva a iniciar sesión ... espero que esto ayude

    
respondido por el code0110 07.11.2013 - 15:57

Lea otras preguntas en las etiquetas