ver variable restaurar mac establecer entorno consultar agregar macos bash path environment-variables

macos - restaurar - variables de entorno windows 10



Configurando variables de entorno en OS X (30)

Cómo configurar el entorno para los nuevos procesos iniciados por Spotlight (sin necesidad de reiniciar)

Puede configurar el entorno utilizado por launchd (y, por extensión, cualquier cosa que se inicie desde Spotlight) con launchctl setenv . Por ejemplo, para establecer la ruta:

launchctl setenv PATH /opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin

O si quieres configurar tu ruta en .bashrc o similar, entonces haz que esté reflejado en launchd:

PATH=/opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin launchctl setenv PATH $PATH

No es necesario reiniciar, aunque deberá reiniciar una aplicación si desea que recupere el entorno modificado.

Esto incluye todos los shells que ya se estén ejecutando en Terminal.app, aunque si está allí, puede configurar el entorno más directamente, por ejemplo, con export PATH=/opt/local/bin:/opt/local/sbin:$PATH para bash o zsh .

Cómo mantener los cambios después de un reinicio

Para mantener los cambios después de un reinicio , puede establecer las variables de entorno desde /etc/launchd.conf , así:

setenv PATH /opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin

launchd.conf se ejecuta automáticamente al reiniciar.

Si desea que estos cambios surtan efecto ahora, debe usar este comando para launchctl.conf a launchctl.conf (¡gracias a @mklement por la sugerencia!)

egrep -v ''^/s*#'' /etc/launchd.conf | launchctl

Puede obtener más información sobre launchctl y cómo carga launchd.conf con el comando man launchctl .

¿Cuál es la forma correcta de modificar las variables de entorno como PATH en OS X?

Busqué un poco en Google y encontré tres archivos diferentes para editar:

  • / etc / caminos
  • ~ / .profile
  • ~ / .tcshrc

Ni siquiera tengo algunos de estos archivos, y estoy bastante seguro de que .tcshrc está equivocado, ya que OS X usa bash ahora. ¿Dónde están definidas estas variables, especialmente PATH?

Estoy ejecutando OS X v10.5 (Leopard).


Solución para aplicaciones de línea de comandos y GUI desde una sola fuente (funciona con Yosemite y El Capitán)

Supongamos que tiene definiciones de variables de entorno en su ~/.bash_profile como en el siguiente fragmento de código:

export JAVA_HOME="$(/usr/libexec/java_home -v 1.8)" export GOPATH="$HOME/go" export PATH="$PATH:/usr/local/opt/go/libexec/bin:$GOPATH/bin" export PATH="/usr/local/opt/coreutils/libexec/gnubin:$PATH" export MANPATH="/usr/local/opt/coreutils/libexec/gnuman:$MANPATH"

Necesitamos un agente de inicio que se ejecute en cada inicio de sesión y en cualquier momento bajo demanda que cargará estas variables en la sesión del usuario. También necesitaremos un script de shell para analizar estas definiciones y compilar los comandos necesarios que ejecutará el agente.

Cree un archivo con el sufijo plist (por ejemplo, denominado osx-env-sync.plist ) en el directorio ~/Library/LaunchAgents/ con el siguiente contenido:

<?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>osx-env-sync</string> <key>ProgramArguments</key> <array> <string>bash</string> <string>-l</string> <string>-c</string> <string> $HOME/.osx-env-sync.sh </string> </array> <key>RunAtLoad</key> <true/> </dict> </plist>

-l parámetro es crítico aquí; es necesario para ejecutar el script de shell con un shell de inicio de sesión para que ~/.bash_profile se obtenga en primer lugar antes de que se ejecute este script.

Ahora, el script de shell. ~/.osx-env-sync.sh en ~/.osx-env-sync.sh con los siguientes contenidos:

grep export $HOME/.bash_profile | while IFS='' ='' read ignoreexport envvar ignorevalue; do launchctl setenv ${envvar} ${!envvar} done

Asegúrese de que el script de shell es ejecutable:

chmod +x ~/.osx-env-sync.sh

Ahora, cargue el agente de inicio para la sesión actual:

launchctl load ~/Library/LaunchAgents/osx-env-sync.plist

(Re) Inicie una aplicación GUI y verifique que pueda leer las variables de entorno.

La configuración es persistente. Sobrevivirá reinicios y relogins.

Después de la configuración inicial (que acaba de hacer), si desea reflejar cualquier cambio en su ~/.bash_profile en todo su entorno nuevamente, volver a ejecutar el launchctl load ... no realizará lo que desea; En su lugar, recibirá una advertencia como la siguiente:

<$HOME>/Library/LaunchAgents/osx-env-sync.plist: Operation already in progress

Para volver a cargar las variables de entorno sin pasar por el proceso de cierre de sesión / inicio de sesión, haga lo siguiente:

launchctl unload ~/Library/LaunchAgents/osx-env-sync.plist launchctl load ~/Library/LaunchAgents/osx-env-sync.plist

Finalmente, asegúrese de reiniciar sus aplicaciones que ya se están ejecutando (incluida Terminal.app) para que estén al tanto de los cambios.

También he incluido el código y las explicaciones aquí en un proyecto de GitHub: osx-env-sync .

Espero que esta sea la solución definitiva, al menos para las últimas versiones de OS X (Yosemite y El Capitán).


/etc/launchd.conf no se usa en Yosemite, El Capitain o Sierra (Alta)

De la launchctlpágina del manual:

/etc/launchd.conf file is no longer consulted for subcommands to run during early boot time; this functionality was removed for security considerations.

El método descrito en esta Pregunta respuesta diferente que funciona para mí (después de un reinicio): aplicaciones lanzadas desde el Dock o de variables de entorno Spotlight Heredar que yo pongo en ~/Library/LaunchAgents/my.startup.plist. (En mi caso, necesitaba configurar LANG, para en_US.UTF-8, un complemento de texto sublime).


Configure su variable de entorno PATH en Mac OS

Abra el programa Terminal (esto está en su carpeta de Aplicaciones / Utilidades por defecto). Ejecute el siguiente comando touch ~ / .bash_profile; abrir ~ / .bash_profile Esto abrirá el archivo en su editor de texto predeterminado.

Para ANDROID SDK como ejemplo:

Debe agregar la ruta a su directorio de herramientas y herramientas del SDK de Android. En mi ejemplo usaré "/ Development / android-sdk-macosx" como el directorio en el que está instalado el SDK. Agregue la siguiente línea:

export PATH=${PATH}:/Development/android-sdk-macosx/platform-tools:/Development/android-sdk-macosx/tools

Guarde el archivo y salga del editor de texto. Ejecute su .bash_profile para actualizar su PATH.

source ~/.bash_profile

Ahora, cada vez que abra el programa Terminal, PATH incluirá el SDK de Android.


Actualización (2017-08-04)

A partir de (al menos) macOS 10.12.6 (Sierra), este método parece haber dejado de funcionar para Apache httpd (tanto para el system como para la opción de user de launchctl config ). Otros programas no parecen verse afectados. Es posible que esto sea un error en httpd.

Respuesta original

Esto se refiere a OS X 10.10+ (10.11+ específicamente debido al modo sin raíz donde /usr/bin ya no se puede escribir).

He leído en varios lugares que el uso de launchctl setenv PATH <new path> para configurar la variable PATH no funciona debido a un error en OS X (lo que parece cierto desde la experiencia personal). Descubrí que hay otra forma en la que se puede establecer PATH para las aplicaciones que no se inician desde el shell :

sudo launchctl config user path <new path>

Esta opción está documentada en la página man de launchctl:

sistema de configuracion | valor de parámetro de usuario

Establece información de configuración persistente para los dominios launchd (8). Solo se pueden configurar el dominio del sistema y los dominios de usuario. La ubicación del almacenamiento persistente es un detalle de la implementación, y los cambios en ese almacenamiento solo se deben realizar a través de este subcomando. Se requiere un reinicio para que los cambios realizados a través de este subcomando tengan efecto.

[...]

camino

Establece la variable de entorno PATH para todos los servicios dentro del dominio de destino al valor de cadena. El valor de la cadena debe ajustarse al formato descrito para la variable de entorno PATH en environ (7). Tenga en cuenta que si un servicio especifica su propio PATH, la variable de entorno específica del servicio tendrá prioridad.

NOTA: esta instalación no se puede usar para establecer variables de entorno generales para todos los servicios dentro del dominio. Está intencionalmente orientado a la variable de entorno PATH y nada más por razones de seguridad.

He confirmado que esto funciona con una aplicación GUI iniciada desde Finder (que usa getenv para obtener PATH). Tenga en cuenta que solo tiene que hacer esto una vez y el cambio será persistente durante los reinicios.


¡En Mountain Lion, todas las modificaciones de /etc/paths y /etc/launchd.conf no tienen ningún efecto!

Los foros de desarrolladores de Apple dicen:

"Cambie la lista de información de .app para que contenga un diccionario" LSEnvironment "con las variables de entorno que desee.

~ / .MacOSX / environment.plist ya no es compatible ".

Así que Info.plist directamente la aplicación Info.plist (haga clic con el botón derecho en "AppName.app" (en este caso SourceTree) y luego " Show package contents ")

y agregó un nuevo par clave / dict llamado:

<key>LSEnvironment</key> <dict> <key>PATH</key> <string>/Users/flori/.rvm/gems/ruby-1.9.3-p362/bin:/Users/flori/.rvm/gems/ruby-1.9.3-p362@global/bin:/Users/flori/.rvm/rubies/ruby-1.9.3-p326/bin:/Users/flori/.rvm/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:</string> </dict>

(ver: Documentación de LaunchServicesKeys en Apple )

ahora la aplicación (en mi caso SourceTree) usa la ruta dada y trabaja con git 1.9.3 :-)

PD: Por supuesto, tiene que ajustar la entrada de Ruta a sus necesidades de ruta específicas.


1.

vim ~/.bash_profile

Es posible que el archivo no exista (si no, simplemente puede crearlo).

2.tipo en esto y guarda el archivo:

export PATH=$PATH:YOUR_PATH_HERE

3.run

source ~/.bash_profile


A veces, todas las respuestas anteriores simplemente no funcionan. Si desea tener acceso a una variable del sistema (como M2_HOME ) en Eclipse o en IntelliJ IDEA, lo único que funciona para mí en este caso es:

Primero (paso 1) edite /etc/launchd.conf para contener una línea como esta: "setenv VAR value" y luego (paso 2) reinicie.

La simple modificación de .bash_profile no funcionará porque en OS X las aplicaciones no se inician como en otros Unix; no heredan las variables de shell del padre. Todas las demás modificaciones no funcionarán por una razón que desconozco. Tal vez alguien más pueda aclarar sobre esto.


Al igual que la respuesta que dio Matt Curtis, configuré las variables de entorno a través de launchctl, pero lo envolví en una función llamada exportar, de modo que cada vez que exporto una variable como normal en mi .bash_profile, también se establece mediante launchctl. Esto es lo que hago:

  1. Mi .bash_profile consiste únicamente en una línea, (esto es solo una preferencia personal).

    source .bashrc

  2. Mi .bashrc tiene esto:

    function export() { builtin export "$@" if [[ ${#@} -eq 1 && "${@//[^=]/}" ]] then launchctl setenv "${@%%=*}" "${@#*=}" elif [[ ! "${@//[^ ]/}" ]] then launchctl setenv "${@}" "${!@}" fi } export -f export

  3. Lo anterior sobrecargará la "exportación" integrada de Bash y exportará todo normalmente (¡notará que exporto "exporté" con ella!), Luego los configura adecuadamente para los entornos de aplicación OS X a través de launchctl, ya sea que use alguno de los siguientes:

    export LC_CTYPE=en_US.UTF-8 # ~$ launchctl getenv LC_CTYPE # en_US.UTF-8 PATH="/usr/local/bin:${PATH}" PATH="/usr/local/opt/coreutils/libexec/gnubin:${PATH}" export PATH # ~$ launchctl getenv PATH # /usr/local/opt/coreutils/libexec/gnubin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin export CXX_FLAGS="-mmacosx-version-min=10.9" # ~$ launchctl getenv CXX_FLAGS # -mmacosx-version-min=10.9

  4. De esta manera no tengo que enviar todas las variables a launchctl todas las veces, y solo puedo tener mi .bash_profile / .bashrc configurado como deseo. Abra una ventana de terminal, revise las variables de entorno que le interesan con launchctl getenv myVar , cambie algo en su .bash_profile / .bashrc, cierre la ventana de terminal y vuelva a abrirla, verifique la variable nuevamente con launchctl y voilá ha cambiado

  5. Nuevamente, al igual que las otras soluciones para el mundo posterior a Mountain Lion, para que las nuevas variables de entorno estén disponibles para las aplicaciones, debe iniciarlas o reiniciarlas después del cambio.


Bruno está en el buen camino. He investigado exhaustivamente y si desea establecer variables que estén disponibles en todas las aplicaciones GUI, su única opción es /etc/launchd.conf .

Tenga en cuenta que environment.plist no funciona para las aplicaciones iniciadas a través de Spotlight. Esto está documentado por Steve Sexton aquí .

  1. Abra un indicador de terminal

  2. Escriba sudo vi /etc/launchd.conf (nota: es posible que este archivo aún no exista)

  3. Poner contenidos como los siguientes en el archivo.

    # Set environment variables here so they are available globally to all apps # (and Terminal), including those launched via Spotlight. # # After editing this file run the following command from the terminal to update # environment variables globally without needing to reboot. # NOTE: You will still need to restart the relevant application (including # Terminal) to pick up the changes! # grep -E "^setenv" /etc/launchd.conf | xargs -t -L 1 launchctl # # See http://www.digitaledgesw.com/node/31 # and http://.com/questions/135688/setting-environment-variables-in-os-x/ # # Note that you must hardcode the paths below, don''t use environment variables. # You also need to surround multiple values in quotes, see MAVEN_OPTS example below. # setenv JAVA_VERSION 1.6 setenv JAVA_HOME /System/Library/Frameworks/JavaVM.framework/Versions/1.6/Home setenv GROOVY_HOME /Applications/Dev/groovy setenv GRAILS_HOME /Applications/Dev/grails setenv NEXUS_HOME /Applications/Dev/nexus/nexus-webapp setenv JRUBY_HOME /Applications/Dev/jruby setenv ANT_HOME /Applications/Dev/apache-ant setenv ANT_OPTS -Xmx512M setenv MAVEN_OPTS "-Xmx1024M -XX:MaxPermSize=512m" setenv M2_HOME /Applications/Dev/apache-maven setenv JMETER_HOME /Applications/Dev/jakarta-jmeter

  4. Guarda tus cambios en vi y reinicia tu Mac. O use el grep / xargs que se muestra en el comentario de código anterior.

  5. Demuestre que sus variables están funcionando abriendo una ventana de Terminal y escribiendo export y debería ver sus nuevas variables. También estarán disponibles en IntelliJ IDEA y otras aplicaciones GUI que inicie a través de Spotlight.


Cualquiera de los archivos de inicio de Bash - ~/.bashrc , ~/.bash_profile , ~/.profile . También hay algún tipo de archivo extraño llamado ~/.MacOSX/environment.plist para variables de entorno en aplicaciones GUI.


Después de perseguir el panel de preferencias de Variables de entorno y descubrir que el enlace está roto y una búsqueda en el sitio de Apple parece indicar que se han olvidado de él ... Volví a la pista del proceso de lanzamiento difícil de alcanzar.

En mi sistema (Mac OS X 10.6.8) parece que las variables definidas en environment.plist se exportan de manera confiable a las aplicaciones lanzadas desde Spotlight (a través de launchd). Mi problema es que esos vars no se están exportando a nuevas sesiones de bash en Terminal. Es decir, tengo el problema opuesto como se muestra aquí.

NOTA: environment.plist se parece a JSON, no a XML, como se describió anteriormente

Pude obtener aplicaciones de Spotlight para ver las vars editando ~ / MacOSX / environment.plist y pude forzar las vars mismas en una nueva sesión de Terminal al agregar lo siguiente a mi archivo .profile:

eval $(launchctl export)


Hay esencialmente dos problemas que resolver cuando se trata de variables de entorno en OS X. El primero es cuando se invocan programas desde Spotlight (el ícono de lupa en el lado derecho del menú Mac / barra de estado) y el segundo cuando se invocan programas desde el Dock . Invocar programas desde una aplicación / utilidad de Terminal es trivial porque lee el entorno desde las ubicaciones de shell estándar ( ~/.profile , ~/.bash_profile , ~/.bashrc , etc.)

Cuando invoque programas desde el Dock, use ~/.MacOSX/environment.plist donde el elemento <dict> contiene una secuencia de elementos <key>KEY</key><string>theValue</string> .

Cuando invoque programas desde Spotlight, asegúrese de que launchd se haya configurado con todos los ajustes de clave / valor que necesita.

Para resolver ambos problemas simultáneamente, uso un elemento de inicio de sesión (establecido a través de la herramienta de Preferencias del sistema) en mi cuenta de usuario. El elemento de inicio de sesión es un script de bash que invoca una función de Emacs lisp aunque, por supuesto, uno puede usar su herramienta de scripting favorita para lograr lo mismo. Este enfoque tiene la ventaja adicional de que funciona en cualquier momento y no requiere un reinicio, es decir, se puede editar ~/.profile , ejecutar el elemento de inicio de sesión en algún shell y tener los cambios visibles para los programas recién invocados, ya sea desde el Dock o Destacar.

Detalles:

~/bin/macosx-startup sesión: ~/bin/macosx-startup

#!/bin/bash bash -l -c "/Applications/Emacs.app/Contents/MacOS/Emacs --batch -l ~/lib/emacs/elisp/macosx/environment-support.el -f generate-environment"

Función de Emacs lisp: ~/lib/emacs/elisp/macosx/envionment-support.el

;;; Provide support for the environment on Mac OS X (defun generate-environment () "Dump the current environment into the ~/.MacOSX/environment.plist file." ;; The system environment is found in the global variable: ;; ''initial-environment'' as a list of "KEY=VALUE" pairs. (let ((list initial-environment) pair start command key value) ;; clear out the current environment settings (find-file "~/.MacOSX/environment.plist") (goto-char (point-min)) (setq start (search-forward "<dict>/n")) (search-forward "</dict>") (beginning-of-line) (delete-region start (point)) (while list (setq pair (split-string (car list) "=") list (cdr list)) (setq key (nth 0 pair) value (nth 1 pair)) (insert " <key>" key "</key>/n") (insert " <string>" value "</string>/n") ;; Enable this variable in launchd (setq command (format "launchctl setenv %s /"%s/"" key value)) (shell-command command)) ;; Save the buffer. (save-buffer)))

NOTA: Esta solución es una mezcla de las versiones anteriores a la mía, especialmente la ofrecida por Matt Curtis, pero he intentado deliberadamente mantener mi plataforma de contenido ~/.bash_profile independiente y poner la configuración del entorno launchd (una instalación solo para Mac). ) en una secuencia de comandos separada.


Otra solución gratuita, de código abierto, Mac OSX Mountain Lion (10.8) EnvPane preferencias / environment.plist es EnvPane .

Código fuente de EnvPane disponible en Github . Parece que EnvPane tiene características similares a RCEnvironment , sin embargo, parece que puede actualizar sus variables almacenadas al instante, es decir, sin la necesidad de reiniciar o iniciar sesión, lo cual es bienvenido.

Según lo indicado por el desarrollador:

EnvPane es un panel de preferencias para Mac OS X 10.8 (Mountain Lion) que le permite configurar variables de entorno para todos los programas en sesiones tanto gráficas como de terminal. No solo restaura la compatibilidad con ~ / .MacOSX / environment.plist en Mountain Lion, sino que también publica sus cambios en el entorno de forma inmediata, sin la necesidad de cerrar sesión y volver a iniciarla.
<SNIP>
EnvPane incluye (e instala automáticamente) un agente launchd que se ejecuta 1) temprano después del inicio de sesión y 2) cada vez que cambia ~ / .MacOSX / environment.plist. El agente lee ~ / .MacOSX / environment.plist y exporta las variables de entorno de ese archivo a la instancia launchd del usuario actual a través de la misma API utilizada por launchctl setenv y launchctl unsetenv.

Descargo de responsabilidad: de ninguna manera estoy relacionado con el desarrollador o su proyecto.

PS Me gusta el nombre (suena como ''Finaliza el dolor'').


Si bien las respuestas aquí no son "incorrectas", agregaré otra: nunca realice cambios de variables de entorno en OS X que afecten a "todos los procesos", o incluso, fuera del shell, para todos los procesos ejecutados interactivamente por un usuario determinado.

En mi experiencia, los cambios globales en las variables de entorno como PATH para todos los procesos tienen incluso más probabilidades de romper las cosas en OS X que en Windows. El motivo es que muchas aplicaciones OS X y otro software (incluidos, quizás, especialmente los componentes del mismo sistema operativo) dependen de las herramientas de línea de comandos de UNIX que se encuentran bajo el capó y asumen el comportamiento de las versiones de estas herramientas provistas con el sistema, y no necesariamente use rutas absolutas al hacerlo (los comentarios similares se aplican a las bibliotecas cargadas dinámicamente y las variables de entorno DYLD_ *). Considere, por ejemplo, que las respuestas mejor calificadas a varias preguntas de desbordamiento de pila sobre cómo reemplazar las versiones de intérpretes como Python y Ruby provistas por OS X generalmente dicen "no hagas esto".

OS X no es realmente diferente a otros sistemas operativos similares a UNIX (por ejemplo, Linux, FreeBSD y Solaris) a este respecto; La razón más probable por la que Apple no proporciona una manera fácil de hacer esto es porque rompe cosas . En la medida en que Windows no es tan propenso a estos problemas, se debe a dos cosas: (1) el software de Windows no tiende a depender de las herramientas de línea de comandos en la medida en que lo hace el software UNIX, y (2) Microsoft ha tenido un historial tan extenso de "infierno de DLL" y problemas de seguridad causados ​​por cambios que afectan a todos los procesos que han cambiado el comportamiento de la carga dinámica en las versiones más recientes de Windows para limitar el impacto de las opciones de configuración "global" como PATH.

"Lame" o no, tendrá un sistema mucho más estable si restringe dichos cambios a ámbitos más pequeños.



Login Shells

/etc/profile

El shell primero ejecuta los comandos en / etc / profile. Un usuario que trabaja con privilegios de root puede configurar este archivo para establecer las características predeterminadas de todo el sistema para los usuarios que ejecutan bash.

.bash_profile .bash_login .profile

A continuación, el shell busca ~ / .bash_profile, ~ / .bash_login, y ~ / .profile (~ / es la abreviatura de su directorio de inicio), en ese orden, ejecutando los comandos en el primero de estos archivos que encuentra. Puede poner comandos en uno de estos archivos para anular los valores predeterminados establecidos en / etc / profile. Un shell que se ejecuta en un terminal virtual no ejecuta comandos en estos archivos.

.bash_logout

Cuando cierre sesión, bash ejecuta comandos en el archivo ~ / .bash_logout. Este archivo a menudo contiene comandos que se limpian después de una sesión, como aquellos que eliminan archivos temporales.

Carcasas interactivas de no inicio de sesión

/etc/bashrc

Aunque no es llamado por bash directamente, muchos archivos ~ / .bashrc llaman a / etc / bashrc. Esta configuración le permite a un usuario que trabaja con privilegios de root establecer características predeterminadas en todo el sistema para shells de bash que no inician sesión.

.bashrc

Un shell interactivo que no es de inicio de sesión ejecuta comandos en el archivo ~ / .bashrc. Por lo general, un archivo de inicio para un shell de inicio de sesión, como .bash_profile, ejecuta este archivo, por lo que tanto los shells de inicio de sesión como los de no inicio de sesión ejecutan los comandos en .bashrc.

Debido a que los comandos en .bashrc pueden ejecutarse muchas veces, y debido a que las subshells heredan variables exportadas, es una buena idea colocar comandos que se agreguen a las variables existentes en el archivo .bash_profile.



Es bastante sencillo, edite el archivo .profile (vi, nano, sublimeText u otro editor de texto), puede encontrarlo en el directorio ~ / (directorio del usuario) y establecerlo así:

export MY_VAR=[your value here]

Ejemplo con java home:

export JAVA_HOME=/Library/Java/JavaVirtualMachines/current

Guárdalo y vuelve a la terminal.

Puedes recargarlo con:

source .profile o cierra / abre tu ventana de terminal.


Es sencillo:

Edite ~ / .profile y ponga sus variables como sigue

$ vim ~ / .profile

En archivo puesto:

MY_ENV_VAR = valor

  1. Guardar (: wq)

  2. Reinicie el terminal (Salga y ábralo nuevamente)

  3. Asegúrese de que todo esté bien:

$ echo $ MY_ENV_VAR

$ valor


Hay dos tipos de conchas en juego aquí.

  • No de inicio de sesión: .bashrc se vuelve a cargar cada vez que inicia una nueva copia de bash
  • Inicio de sesión: el .profile se carga solo cuando usted inicia sesión, o le dice explícitamente a bash que lo cargue y lo use como un shell de inicio de sesión.

Es importante entender aquí que con bash .bashrc solo se lee mediante un shell que es interactivo y no de inicio de sesión, y encontrará que la gente suele cargar .bashrc en .bash_profile para superar esta limitación.

Ahora que tiene la comprensión básica, veamos cómo le aconsejaría que la configurara.

  • .profile: crealo inexistente. Ponga su configuración de ruta allí.
  • .bashrc: crear si no existe. Pon todos tus alias y tu método personalizado ahí.
  • .bash_profile: crear si no existe. Pon lo siguiente allí.

.bash_file:

#!/bin/bash source ~/.profile # Get the PATH settings source ~/.bashrc # Get Aliases and Functions #


Para ser conciso y claro sobre a qué está destinado cada archivo.

  • ~/.profile se obtiene cada vez que se ejecuta Terminal.app
  • ~/.bashrc es donde "tradicionalmente" se establecen todas las declaraciones de exportación para el entorno Bash
  • /etc/paths es el archivo principal en Mac OS que contiene la lista de rutas predeterminadas para crear la variable de entorno PATH para todos los usuarios
  • /etc/paths.d/ contiene archivos que contienen rutas de búsqueda adicionales

¡Los programas no terminales no heredan las variables PATH y MANPATH de todo el sistema que su terminal sí! Para configurar el entorno para todos los procesos iniciados por un usuario específico, por lo que las variables de entorno están disponibles para las aplicaciones GUI de Mac OS X, esas variables deben definirse en su ~/.MacOSX/environment.plist(QTT QA1067 de Apple sobre técnicas)

Usa la siguiente línea de comando para sincronizar tu environment.plistcon /etc/paths:

defaults write $HOME/.MacOSX/environment PATH "$(tr ''/n'' '':'' </etc/paths)"


Acabo de hacer esto realmente fácil y rápido. Primero crea un ~ / .bash_profile desde la terminal:

touch .bash_profile

entonces

open -a TextEdit.app .bash_profile

añadir

export TOMCAT_HOME=/Library/Tomcat/Home

Guarda documement y listo.


Aquí hay una forma muy sencilla de hacer lo que quieras. En mi caso, se fue gradlea trabajar (por Android Studio)

  • Abre la Terminal.
  • Ejecuta el siguiente comando:

    sudo nano /etc/paths o sudo vim /etc/paths

  • Introduzca su contraseña cuando se le solicite.

  • Vaya al final del archivo e ingrese la ruta que desea agregar.
  • Pulsa control-x para salir.
  • Introduzca ''Y'' para guardar el búfer modificado.
  • Abra una nueva ventana de terminal y luego escriba:

    echo $PATH

Debería ver la nueva ruta adjunta al final de la RUTA

Obtuve estos detalles de este post:

http://architectryan.com/2012/10/02/add-to-the-path-on-mac-os-x-mountain-lion/#.UkED3rxPp3Q

Espero que pueda ayudar a alguien mas


Bueno, no estoy seguro de los archivos /etc/pathsy ~/.MacOSX/environment.plist. Esos son nuevos.

Pero con Bash, debes saber que .bashrcse ejecuta con cada nueva invocación de shell y .bash_profilesolo se ejecuta una vez en el inicio.

No sé con qué frecuencia esto ocurre con Mac OS X. Creo que la distinción se ha roto con el sistema de ventanas que inicia todo.

Personalmente, elimino la confusión creando un .bashrcarchivo con todo lo que necesito y luego hago:

ln -s .bashrc .bash_profile


Para Bash, intente agregar sus variables de entorno al archivo /etc/profilepara que estén disponibles para todos los usuarios. No es necesario reiniciar, simplemente inicie una nueva sesión de Terminal.


Para la modificación de un solo usuario, utilice ~/.profilelos que haya enumerado. El siguiente enlace explica cuándo Bash lee los diferentes archivos.

http://telin.ugent.be/~slippens/drupal/bashrc_and_others

Si desea configurar la variable de entorno para aplicaciones gui, necesita el archivo ~ / .MacOSX / environment.plist


Todo el Magic en IOS solo se usa sourcecon el archivo, donde exporta sus variables ENV.

Por ejemplo:

Puedes crear un archivo como este:

export bim=fooo export bom=bar

Guarde este archivo como bimbom.env, y haga source ./bimbom.evVoilá, tiene sus variables ENV.

Revísalos con: echo $bim


Una cosa a tener en cuenta además de los enfoques sugeridos es que, al menos en OS X v10.5 (Leopard), las variables establecidas launchd.confse fusionarán con la configuración realizada en .profile. Supongo que es probable que esto también sea válido para la configuración ~/.MacOSX/environment.plist, pero no lo he verificado.