Establecer variables de entorno en Mac OS X Lion


Cuando alguien dice "edite su .plist file " o " su .perfil" o".bash_profile " etc, esto me confunde. No tengo idea de dónde están estos archivos, cómo crearlos si tengo que hacer eso, etc., y también por qué parece haber tantos archivos diferentes (¿por qué? ¿Hacen cosas diferentes?)

Así que alguien podría explicar con mucha paciencia a un usuario anterior de Windows (queriendo desesperadamente familiarizarse con el agradable aunque inicialmente algo confuso mundo de OS X) cómo hacer esto paso por paso?

Necesito que las variables se establezcan tanto para aplicaciones GUI como para aplicaciones de línea de comandos, y por el momento es para un script ant que necesita las variables, pero lo más probable es que haya otras necesidades también.

Tenga en cuenta que también tengo León, ya que muchas de las respuestas que obtiene en Google parecen estar desactualizadas para León...

También tenga en cuenta que tengo prácticamente cero experiencia usando el Terminal. Estoy dispuesto a aprender, pero por favor explique para un novato...

Author: Marcus Leon, 2011-09-21

15 answers

Primero, una cosa a reconocer sobre OS X es que está construido en Unix. Aquí es donde el .entra bash_profile. Cuando inicia la aplicación Terminal en OS X, obtiene un shell bash de forma predeterminada. El shell bash viene de Unix y cuando se carga se ejecuta el .script bash_profile. Puede modificar este script para que su usuario cambie su configuración. Este archivo se encuentra en:

~/.bash_profile

Actualización para Mavericks

OS X Mavericks no utiliza el entorno.plist - al menos no para aplicaciones de OS X Windows. Puede usar la configuración de launchd para aplicaciones con ventanas. El .bash_profile todavía está soportado ya que es parte del shell bash usado en Terminal.

Solo León y León de Montaña

Las aplicaciones con ventanas OS X reciben variables de entorno desde su entorno.archivo plist. Esto es probablemente lo que quiere decir con el".plist " file. Este archivo se encuentra en:

~/.MacOSX/environment.plist

Si realiza un cambio en su ambiente.a continuación, las aplicaciones de OS X Windows, incluida la aplicación Terminal, tendrán esas variables de entorno establecidas. Cualquier variable de entorno que establezca en su .bash_profile solo afectará a tus shells bash.

Generalmente solo establezco variables en mi .bash_profile y no cambie el .archivo plist (o archivo launchd en Mavericks). La mayoría de las aplicaciones con ventanas de OS X no necesitan ningún entorno personalizado. Solo cuando una aplicación realmente necesita una variable de entorno específica puedo cambiar ambiente.plist (o archivo launchd en Mavericks).

Parece que lo que quieres es cambiar el entorno.archivo plist, en lugar de la.bash_profile.

Una última cosa, si buscas esos archivos, creo que no los encontrarás. Si mal no recuerdo, no estaban en mi instalación inicial de León.

Edit: Aquí hay algunas instrucciones para crear un archivo plist.

  1. Abrir Xcode
  2. Seleccione Archivo -> Nuevo -> Nuevo archivo...
  3. Bajo Mac OS X seleccionar recursos
  4. Elija un archivo plist
  5. Siga el resto de las indicaciones

Para editar el archivo, puede controlar y hacer clic para obtener un menú y seleccionar Agregar fila. A continuación, puede agregar un par de valor clave. Para las variables de entorno, la clave es el nombre de la variable de entorno y el valor es el valor real de esa variable de entorno.

Una vez creado el archivo plist, puede abrirlo con Xcode para modificarlo en cualquier momento que desee.

 376
Author: David V,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 11:55:07

Su ".perfil" o".bash_profile " son simplemente archivos que están presentes en su carpeta "home". Si abre una ventana del Finder y hace clic en el nombre de su cuenta en el panel Favoritos ... no los verás. Si abre una ventana de Terminal y escribe " ls " para listar archivos ... todavía no los verás. Pero puedes encontrarlos usando "ls-a" en el terminal. O si abre su editor de texto favorito (diga TextEdit ya que viene con OS X) y haga Archivo->Abrir y luego presione Comando+Mayús+. y haga clic en su nombre de la cuenta (carpeta de inicio) los verá también. Si no los ve, simplemente puede crear uno en su editor de texto favorito.

Ahora, agregar variables de entorno es bastante sencillo y notablemente similar a Windows conceptualmente. En tu .profile simplemente agregue, uno por línea, el nombre de la variable y su valor de la siguiente manera:

export JAVA_HOME=/Library/Java/Home
export JRE_HOME=/Library/Java/Home

Etc.

Si está modificando su variable "PATH", asegúrese de incluir la ruta predeterminada del sistema que ya se estableció para usted:

export PATH=$PATH:/path/to/my/stuff

Ahora aquí está la parte peculiar, puede abrir una nueva ventana de Terminal para que las nuevas variables tengan efecto, o tendrá que escribir ". .perfil" o". .bash_profile " para recargar el archivo y hacer que el contenido se aplique al entorno de su Terminal actual.

Puede comprobar que sus cambios surtieron efecto utilizando el comando "set" en su Terminal. Simplemente escriba " set "(o" set | more " si prefiere una lista paginada) y asegúrese de que lo que agregó al archivo es alli.

En cuanto a agregar variables de entorno a las aplicaciones GUI, normalmente no es necesario y me gustaría saber más sobre lo que está tratando de hacer específicamente para darle una mejor respuesta.

 201
Author: tokkov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-09-21 15:07:24

Aquí hay un poco más de información específicamente sobre la variable PATH en Lion OS 10.7.x:

Si necesita establecer la RUTA globalmente, la RUTA es construida por el sistema en el siguiente orden:

  1. Analizando el contenido del archivo /private/etc/paths, una ruta por línea
  2. Analizando el contenido de la carpeta /private/etc/paths.d. Cada archivo en esa carpeta puede contener varias rutas, una ruta por línea. El orden de carga está determinado por el nombre del archivo primero, y luego por el orden de las líneas file.
  3. Una instrucción setenv PATH en /private/etc/launchd.conf, que anexará esa ruta a la ruta ya construida en #1 y #2 (no debe usar PATH PATH para hacer referencia a la variable PATH que se ha construido hasta ahora). Sin embargo, establecer la RUTA aquí es completamente innecesario dadas las otras dos opciones, aunque este es el lugar donde se pueden establecer otras variables de entorno globales para todos los usuarios.

Estas rutas y variables son heredadas por todos los usuarios y aplicaciones, por lo que son verdaderamente globales -- cerrar y cerrar sesión no restablecerá estas rutas're están construidas para el sistema y se crean antes de que cualquier usuario tenga la oportunidad de iniciar sesión, por lo que los cambios en estos requieren un reinicio del sistema para surtir efecto.

POR cierto, una instalación limpia de OS 10.7.x Lion no tiene un environment.plist que pueda encontrar, por lo que puede funcionar, pero también puede estar en desuso.

 74
Author: jonphipps,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-01-12 20:16:23
echo $PATH

Imprime el valor de la ruta actual

Luego haga vim ~/.bash_profile y escriba

export PATH=$PATH:/new/path/to/be/added

Aquí estás anexando al antiguo sendero, así que preserva el antiguo sendero y agrega tu nuevo sendero a él

Entonces haga

source ~/.bash_profile

Esto lo ejecutará y agregará la ruta

Luego verifique de nuevo con

echo $PATH
 45
Author: learner_19,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-03-29 10:28:20

Desafortunadamente ninguna de estas respuestas resolvió el problema específico que tenía.

Aquí hay una solución simple sin tener que meterse con bash. En mi caso, estaba consiguiendo gradle para trabajar (para Android Studio).

Por cierto, estos pasos se relacionan con OSX (Mountain Lion 10.8.5)

  • Abra la terminal.
  • Ejecute el siguiente comando:

    sudo nano /etc/paths (o sudo vim /etc/paths para vim)

    nano

  • Vaya a la parte inferior del archivo e ingrese la ruta que desea añadir.
  • Pulse control-x para salir.
  • Ingrese 'Y' para guardar el búfer modificado.
  • Abra una nueva ventana de terminal y escriba:

    echo $PATH

Debería ver la nueva ruta anexa 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 más

 30
Author: wired00,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-04-01 23:27:08

Explicación simplificada

Este post/pregunta es un poco viejo, así que voy a responder a una versión simplificada para los usuarios de OS X Lion. Por defecto, OSX Lion no tiene ninguno de los siguientes archivos:

  • ~/.bashrc
  • ~/.bash_profile
  • ~/.perfil

A lo sumo, si has hecho algo en la terminal es posible que veas ~/.bash_history

Lo Que Significa

Debe crear el archivo para establecer sus comandos bash predeterminados (comúnmente en ~/.bashrc). Hacer esto, usa cualquier tipo de editor, aunque es más sencillo hacerlo dentro de la terminal:

  1. %> emacs .perfil
  2. [de w / in emacs type:] source ~/.bashrc
  3. [de w / in emacs type:] Ctrl + x Ctrl + s (para guardar el archivo)
  4. [de w / in emacs type:] Ctrl + x Ctrl + c (para cerrar emacs)
  5. %> emacs .bashrc
  6. [de w/in emacs escriba/pegue todos sus comandos bash, guarde y salga]

La próxima vez que salga y vuelva a cargar el terminal, debería cargar todas sus preferencias de bash. Para una buena medida, por lo general es una buena idea separar los comandos en nombres de archivo útiles. Por ejemplo, desde dentro ~/.bashrc, deberías tener un source ~/.bash_aliases y poner todas tus órdenes de alias en ~/.bash_aliases.

 23
Author: vol7ron,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-07-06 13:18:48

Lo que funcionó para mí es crear un .launchd.conf con las variables que necesitaba:

setenv FOO barbaz

Este archivo es leído por launchd al iniciar sesión. Puede agregar una variable 'sobre la marcha' al launchd en ejecución usando:

launchctl setenv FOO barbaz`

De hecho, .launchd.cond simplemente contiene comandos launchctl.

Las variables establecidas de esta manera parecen estar presentes en las aplicaciones GUI correctamente.

Si está tratando de establecer sus variables LANG o LC_ de esta manera, y está utilizando iTerm2, asegúrese de deshabilitar el Ajuste' Set locale variables automatically ' en la pestaña Terminal del Perfil que está utilizando. Eso parece anular las variables de entorno de launchd, y en mi caso estaba configurando un LC_CTYPE roto que causaba problemas en los servidores remotos (al que se le pasó la variable).

(El medio ambiente.plist todavía parece trabajar en mi León sin embargo. Puede usar el panel de preferencias RCenvironment para mantener el archivo en lugar de editarlo manualmente o Xcode requerido. Todavía parece funcionar en León, aunque su última actualización es de la era del Leopardo de las Nieves. Hace que sea mi método preferido personalmente.)

 18
Author: Gilimanjaro,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-10-26 13:04:52

Configure la variable de entorno PATH en Mac OS

Abra el programa Terminal (esto se encuentra en la carpeta Applications/Utilites por defecto). Ejecute el siguiente comando

touch ~/.bash_profile; open ~/.bash_profile

Esto abrirá el archivo en su editor de texto predeterminado.

Para ANDROID SDK como ejemplo :

Necesitas agregar la ruta a tu Android SDK platform-tools and tools directory. 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. Ejecutar su .bash_profile para actualizar su RUTA.

source ~/.bash_profile

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

 14
Author: Charaf JRA,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-01-02 12:43:04

Añadiendo variables de ruta a OS X Lion

Esto fue bastante sencillo y funcionó para mí, en terminal:

$echo "export PATH=$PATH:/path/to/whatever" >> .bash_profile #replace "/path/to/whatever" with the location of what you want to add to your bash profile, i.e: $ echo "export PATH=$PATH:/usr/local/Cellar/nginx/1.0.12/sbin" >> .bash_profile 
$. .bash_profile #restart your bash shell

Una respuesta similar estaba aquí: http://www.mac-forums.com/forums/os-x-operating-system/255324-problems-setting-path-variable-lion.html#post1317516

 11
Author: Yaw Joseph Etse,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-06-07 06:23:04

Abrir terminal:

vi ~/.bash_profile

Aplicar el cambio al sistema (no es necesario reiniciar el equipo):

source ~/.bash_profile

(También funciona con macOS Sierra 10.12.1)

 7
Author: Do Nhu Vy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-11-19 09:07:21

Tuve un problema con Eclipse (iniciado como GUI, no desde script) en Maverics que no tomaba RUTA personalizada. Probé todos los métodos mencionados anteriormente en vano. Finalmente encontré la respuesta de trabajo más simple basada en sugerencias de aquí :

  1. Vaya a /Applications/eclipse/Eclipse.app / Contents folder

  2. Editar Información.archivo plist con editor de texto (o XCode), añadir LSEnvironment diccionario para variables de entorno con completo path . Tenga en cuenta que también incluye /usr/bin etc:

    <dict>
      <key>LSEnvironment</key>
      <dict>
            <key>PATH</key>
            <string>/usr/bin:/bin:/usr/sbin:/sbin:/dev/android-ndk-r9b</string>
      </dict>
      <key>CFBundleDisplayName</key>
      <string>Eclipse</string>
      ...
    
  3. Recargar parámetros para la aplicación con

    /System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.fra‌​mework/Support/lsregister -v -f /Applications/eclipse/Eclipse.app
    
  4. Reiniciar Eclipse

 5
Author: JaakL,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-04-13 12:45:06

Permítanme ilustrarles a partir de mi ejemplo personal de una manera muy redundante.

  1. Primero después de instalar JDK, asegúrese de que está instalado. introduzca la descripción de la imagen aquí
  2. A veces, macOS o Linux configuran automáticamente la variable de entorno para usted, a diferencia de Windows. Pero ese no es el caso siempre. Así que vamos a comprobarlo. introduzca la descripción de la imagen aquí La línea inmediatamente después de echo JAV JAVA_HOME estaría vacía si la variable de entorno no está establecida. Debe estar vacía en tu maleta.

  3. Ahora tenemos que comprobar si tenemos el archivo bash_profile. introduzca la descripción de la imagen aquí Viste que en mi caso ya tenemos bash_profile. Si no tenemos que crear un fichero bash_profile.

  4. Cree un archivo bash_profile. introduzca la descripción de la imagen aquí

  5. Compruebe de nuevo para asegurarse de que el archivo bash_profile está allí. introduzca la descripción de la imagen aquí

  6. Ahora vamos a abrir el archivo bash_profile. macOS abre usando el editor de texto predeterminado programa. introduzca la descripción de la imagen aquí

  7. Este es el archivo donde se guardan las variables de entorno. Si ha abierto un nuevo archivo bash_profile, debe estar vacía. En mi caso, ya estaba configurado para el lenguaje de programación python y la distribución Anaconda. Ahora, necesito agregar variable de entorno para Java que solo está agregando la primera línea. DEBE ESCRIBIR la primera línea TEXTUALMENTE. SÓLO la primera línea. Guardar y cerrar el TextEdit. Luego cierre la terminal. introduzca la descripción de la imagen aquí

  8. Abierto la terminal otra vez. Vamos a comprobar si la variable de entorno está configurada. introduzca la descripción de la imagen aquí

 5
Author: Sumit Pokhrel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-09-19 22:11:51

Tomé la ruta idiota. Añadido al final de /etc/profile

for environment in `find /etc/environments.d -type f`
do
     . $environment
done

Se ha creado una carpeta /etc / environments cree un archivo en él llamado " oracle "o" lo que sea " y agregue las cosas que necesitaba establecer globalmente a él.

/etc cat cat /etc/environments.d / Oracle

export PATH=$PATH:/Library/Oracle/instantclient_11_2
export DYLD_LIBRARY_PATH=/Library/Oracle/instantclient_11_2
export SQLPATH=/Library/Oracle/instantclient_11_2
export PATH=$PATH:/Library/Oracle/instantclient_11_2
export TNS_ADMIN=/Library/Oracle/instantclient_11_2/network/admin
 4
Author: Rob in Katy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-08-21 22:15:23

Más detalles, que quizás puedan ser útiles para alguien:

Debido a mis propias exploraciones, ahora sé cómo establecer variables de entorno de 7 de 8 maneras diferentes. Estaba tratando de obtener un envar a través de una aplicación que estoy desarrollando bajo Xcode. Configuré envars "tracer" usando estos diferentes métodos para decirme cuáles lo introducen en el ámbito de mi aplicación. A continuación, puede ver que editar el "esquema" en Xcode para agregar argumentos funciona, al igual que"putenv". Lo que no lo puso en ese alcance:~/.MACOS / entorno.plist, plist específico de la aplicación, .perfil, y agregar una fase de compilación para ejecutar un script personalizado (encontré otra forma en Xcode [al menos] para establecer uno, pero olvidé lo que llamé el trazador y no puedo encontrarlo ahora; tal vez esté en otra máquina....)

GPU_DUMP_DEVICE_KERNEL es 3

GPU_DUMP_TRK_ENVPLIST es (null)

GPU_DUMP_TRK_APPPLIST es (null)

GPU_DUMP_TRK_DOTPROFILE is (null)

GPU_DUMP_TRK_RUNSCRIPT es (null)

GPU_DUMP_TRK_SCHARGS es 1

GPU_DUMP_TRK_PUTENV es 1

... por otro lado, si entro en Terminal y digo "set", parece que el único que obtiene es el de .perfil (yo habría pensado que recogería el medio ambiente.plist también, y estoy seguro de que una vez vi un segundo rastreador envar en Terminal, así que algo probablemente se ha ido torcido desde entonces. Largo día....)

 1
Author: Photovore,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-09-02 21:44:19

Paso 1: abrir ~/.bash_profile

Ahora se abre un editor de texto:

Paso 2: el nombre de la variable debe estar en mayúsculas. en este ejemplo la variable es NODE_ENV

Paso 3: export NODE_ENV=development

Guárdelo y cierre.

Reinicie su sistema.

Hecho.

Para comprobar la variable env: abra el terminal y escriba

echo $NODE_ENV 
 -3
Author: Navya,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-01-13 23:12:06