Actualización: el siguiente enlace no tiene una respuesta completa . Tener que establecer la ruta o variable en dos lugares (uno para GUI y otro para shell) es poco convincente.
No duplicado de : ¿ Establecer variables de entorno en OS X?
Viniendo de un fondo de Windows donde es muy fácil establecer y modificar variables de entorno (solo vaya a Propiedades del sistema> Avanzado> Variables de entorno), no parece ser tan sencillo en Mac OS 10.5. La mayoría de las referencias dicen que debería actualizar / etc / profile o ~ / .profile. ¿Son los equivalentes de las variables del sistema y las variables de usuario? Por ejemplo, ¿dónde debo configurar mi JAVA_HOME
variable?
EDITAR:
Quiero poder acceder a la variable desde el terminal, así como a una aplicación como Eclipse. Además, espero no tener que reiniciar / cerrar sesión para que esto surta efecto.
fuente
Respuestas:
No hay necesidad de duplicación. Puede establecer variables de entorno utilizadas por launchd (y procesos secundarios, es decir, cualquier cosa que comience desde Spotlight) usando
launchctl setenv
.Por ejemplo, si desea reflejar su ruta actual en launchd después de configurarla en
.bashrc
o donde sea:Las variables de entorno no se actualizan automáticamente en las aplicaciones en ejecución. Deberá reiniciar las aplicaciones para obtener las variables de entorno actualizadas (aunque solo puede establecer variables en su shell, por ejemplo
PATH=whatever:you:want
, no es necesario reiniciar el terminal).fuente
launchctl setenv
parecen ser solo visibles para el usuario que realiza el cambio. Si configuro una variable como usuario ordinario, no es visible para root (a través de sudo) y viceversa.ps aux | grep launchd
lo mostrará. Compruebe tambiénman sudo
qué documentossudo
(de forma predeterminada) restablecen deliberadamente el entorno, sisudo -E
conservará el entorno (incluidas las variables que haya configuradolaunchctl setenv
). ¿Tienes una aplicación real para esto, por cierto? Si es así, ¿este método funciona para usted?Hay varios lugares donde puede establecer variables de entorno.
~/.profile
: use esto para las variables que desea establecer en todos los programas iniciados desde la terminal (tenga en cuenta que, a diferencia de Linux, todas las shells abiertas en Terminal.app son shells de inicio de sesión).~/.bashrc
: esto se invoca para shells que no son shells de inicio de sesión. Use esto para los alias y otras cosas que deben redefinirse en subcapas, no para las variables de entorno heredadas./etc/profile
: esto se carga antes de ~ / .profile, pero por lo demás es equivalente. Úselo cuando desee que la variable se aplique a los programas de terminal iniciados por todos los usuarios en la máquina (suponiendo que usen bash).~/.MacOSX/environment.plist
: esto se lee mediante loginwindow al iniciar sesión. Se aplica a todas las aplicaciones, incluidas las GUI, excepto las lanzadas por Spotlight en 10.5 (no 10.6). Requiere que cierre sesión y vuelva a iniciar sesión para que los cambios surtan efecto. Este archivo ya no es compatible a partir de OS X 10.8.launchd
instancia de su usuario : esto se aplica a todos los programas lanzados por el usuario, la GUI y la CLI. Puede aplicar los cambios en cualquier momento utilizando elsetenv
comando enlaunchctl
. En teoría , debería poder ponersetenv
comandos~/.launchd.conf
ylaunchd
leerlos automáticamente cuando el usuario inicia sesión, pero en la práctica nunca se implementó el soporte para este archivo. En su lugar, puede usar otro mecanismo para ejecutar un script al iniciar sesión y hacer que ese script llamelaunchctl
para configurar ellaunchd
entorno./etc/launchd.conf
: Esto es leído por launchd cuando el sistema se inicia y cuando un usuario inicia sesión. Afectan a cada proceso en el sistema, porque launchd es el proceso raíz. Para aplicar los cambios a la raíz ejecutable launchd puede canalizar los comandossudo launchctl
.Las cosas fundamentales para entender son:
launchctl
; las variables actualizadas son heredadas por todos los procesos nuevos que bifurca a partir de ese momento.Ejemplo de establecer una variable de entorno con launchd:
Ahora, inicie su aplicación GUI que usa la variable, ¡y listo!
Para evitar el hecho de que
~/.launchd.conf
no funciona, puede poner el siguiente script en~/Library/LaunchAgents/local.launchd.conf.plist
:Luego puede ponerlo
setenv REPLACE_WITH_VAR REPLACE_WITH_VALUE
dentro~/.launchd.conf
, y se ejecutará en cada inicio de sesión.Tenga en cuenta que, al canalizar una lista de comandos en launchctl de esta manera, no podrá establecer variables de entorno con valores que contengan espacios. Si necesita hacerlo, puede llamar launchctl de la siguiente manera:
launchctl setenv MYVARIABLE "QUOTE THE STRING"
.Además, tenga en cuenta que otros programas que se ejecutan al iniciar sesión pueden ejecutarse antes del iniciador y, por lo tanto, pueden no ver las variables de entorno que establece.
fuente
~/.MacOSX/environment.plist
a mi León, se lee y se usa. Solo lo probé. De hecho, lo prefiero a .launchd.conf porque uso el panel de preferencias RCenvironment para mantenerlo.~/.launchd.conf
trabajar en 10.6.8, no parece tener ningún efecto. También la página del manual dice que este archivo no es compatible actualmente.~/.launchd.conf
todavía no es compatible y no funciona a partir de OS X 10.8.3? Verman launchd.conf
Creo que lo que está buscando el OP es una solución simple, similar a Windows.
aqui tienes:
https://www.macupdate.com/app/mac/14617/rcenvironment
fuente
Puede leer en Linux, que es bastante parecido a lo que es Mac OS X. O puede leer en BSD Unix, que está un poco más cerca. En su mayor parte, las diferencias entre Linux y BSD no son demasiado.
/etc/profile
son variables de entorno del sistema.~/.profile
son variables de entorno específicas del usuario."¿Dónde debo configurar mi variable JAVA_HOME?"
/etc/profile
?En general, prefiero no meterme con la configuración de todo el sistema, aunque soy el único usuario. Prefiero editar mi configuración local.
fuente
Para las aplicaciones GUI, deberá crear y editar
~/.MacOSX/environment.plist
. Más detalles aquí . Deberá cerrar sesión para que estos surtan efecto. No estoy seguro de si también afectan a las aplicaciones iniciadas desde Terminal, pero supongo que lo harían.Para las aplicaciones iniciadas desde Terminal, también puede editar el archivo ~ / .profile.
fuente
Simplemente abra el
~/.profile
archivo,nano
en Terminal y escriba allí:Guarde este archivo (cmd + X e Y). Después de eso, cierre sesión / vuelva a iniciar sesión o simplemente abra una nueva pestaña en Terminal e intente usar su nueva variable.
NO olvides agregar ": $ PATH" después de lo que quieras / lo que quieras, de lo contrario, borrarás todas las rutas en la variable PATH, que estaban allí antes.
fuente
Sincronice las variables de entorno OS X para aplicaciones de línea de comandos y GUI desde una única fuente con osx-env-sync .
También publiqué una respuesta a una pregunta relacionada aquí .
fuente
Si desea cambiar las variables de entorno de forma permanente en macOS, configúrelas
/etc/paths
. Tenga en cuenta que este archivo es de solo lectura de forma predeterminada, por lo que tendrá que modificarlo para obtener permisos de escritura.fuente
/usr/bin/local
en ese archivo, incluso sin modificar el archivo, era así de forma predeterminada, y sin embargo, mis aplicaciones GUI solo ven/usr/bin:/bin:/usr/sbin:/sbin
. Lo reinicié muchas veces.cat /etc/paths/
?Para usuarios de Mac OS X Catalina 2020:
Olvídate de otras respuestas inútiles, aquí solo se necesitan dos pasos:
Cree un archivo con la convención de nomenclatura: priority-appname. Luego copie y pegue la ruta a la que desea agregar
PATH
.Por ejemplo,
80-vscode
con contenido/Applications/Visual Studio Code.app/Contents/Resources/app/bin/
en mi caso.Mueve ese archivo a
/etc/paths.d/
. ¡No olvides abrir una nueva pestaña (nueva sesión) en la Terminal y escribirecho $PATH
para verificar que tu ruta esté agregada!Aviso: este método solo agrega su ruta a
PATH
.fuente