2 votos

¿Cómo puedo hacer que las variables de entorno se carguen al iniciar la terminal?

Cabe señalar que estoy en MacOS 12.0.1 y estoy buscando agregar algunas variables de entorno persistentes.

He visto publicaciones sobre la creación y adición de ~/.bashrc o ~/.bash_profile pero no estoy seguro cuál es cuál. Dicho esto, todo lo que agregue allí solo funciona después de que use . ./bash_profile o source ./bash_profile una vez que se carga la terminal. También he intentado agregar source ./bash_profile ya sea a bashrc o bash_profile pero eso me da un error de "abrir demasiados archivos".

Gracias de antemano

0 votos

¿Revisaste esto?

3voto

Esta es una de las áreas donde Linux y macOS difieren, por lo que muchos artículos que encuentres solo se aplican parcialmente a macOS. Principalmente, en macOS, cada pestaña del Terminal ejecuta un shell de inicio de sesión.

  • Para shells de inicio de sesión, bash lee ~/.bash_profile o (si este falta) ~/.profile.
  • Para shells interactivos, bash lee ~/.bashrc.

Por lo tanto, en macOS en realidad no importa cuál de ~/.bashrc o ~/.bash_profile elijas. Sin embargo, es útil ser consistente y quedarse con uno u otro.

Para hacer que las variables de entorno estén disponibles en todas las sesiones futuras, simplemente agrégalas al archivo de tu elección:

MYVAR='Hola, mundo'; export MYVAR

PD: Personalmente tengo test -f ~/.bashrc && . ~/.bashrc en .profile y todas las definiciones en ~/.bashrc. Esto abarca ambos mundos (a costa de siempre cargar algunas cosas que solo son aplicables a Linux o macOS) y en mi opinión es lo suficientemente bueno para uso personal.

0 votos

Apple no cambia cómo / cuándo bash lee sus archivos de inicio. La sección DE INVOCACIÓN de la página del manual existe por una razón.

0 votos

@MarcWilson Eso es correcto (y, hasta donde puedo ver, no digo nada más en la respuesta). Lo que es diferente es que cada pestaña de Terminal está ejecutando una shell de inicio de sesión (lo cual normalmente no es el caso en Linux), por lo que la invocación de un proceso de shell como tal difiere.

0 votos

"Esta es una de las áreas en las que Linux y macOS difieren"... pero no lo hacen. El shell funciona de la misma manera en ambos. Sé lo que quisiste decir y tú sabes lo que quisiste decir, pero dudo que el OP lo sepa.

0voto

Ana Puntos 71

Desde los archivos de documentación para desarrolladores de Apple Scripts de inicio de sesión:

OS X proporciona soporte para scripts de inicio de sesión y listas de propiedades del entorno que le permiten configurar variables de entorno y alias que se configuran automáticamente cada vez que ejecuta una nueva shell. Hay dos formas de hacer esto:

Shell de Bourne (bash, zsh, y así sucesivamente):

Para establecer de forma persistente variables de entorno y añadir alias, puede agregar los comandos de alias, asignación de variables y exportación apropiados a los siguientes archivos:

  • ~/.profile—ejecutado automáticamente para todas las shells de inicio de sesión.
  • ~/.bash_profile—similar a .profile, pero solo se ejecuta para shells de inicio de sesión de bash.
  • ~/.bashrc y ~/.zshrc—ejecutado automáticamente para todas las shells no de inicio de sesión de bash o zsh (cuando escribe explícitamente bash o zsh en la línea de comandos o ejecuta un script que comienza con #!/bin/bash o #!/bin/zsh).

También puede resultar útil crear un archivo .bashrc que obtenga su archivo .profile. Por ejemplo:

. $HOME/.profile

1 votos

Bashrc solo se lee para shells interactivos.

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