Saltar al contenido

Usando exportar en .bashrc

Siéntete libre de compartir nuestra web y códigos con otro, ayúdanos a ampliar esta comunidad.

Solución:

Solo necesitas export para las variables que deberían ser “vistas” por otros programas que se ejecutan en el shell, mientras que los que solo se utilizan dentro del shell no necesitan ser exported.

Esto es lo que dice la página de manual:

The  supplied  names are marked for automatic export to the environ‐
ment of subsequently executed commands.  If the -f option is  given,
the  names  refer to functions.  If no names are given, or if the -p
option is supplied, a list of all names that are  exported  in  this
shell  is  printed.   The -n option causes the export property to be
removed from each name.  If a variable name is  followed  by  =word,
the  value  of  the variable is set to word.  export returns an exit
status of 0 unless an invalid option  is  encountered,  one  of  the
names  is  not a valid shell variable name, or -f is supplied with a
name that is not a function.

Esto se puede demostrar con lo siguiente:

$ MYVAR="value"
$ echo $MYVAR
value
$ echo 'echo $MYVAR' > echo.sh
$ chmod +x echo.sh
$ ./echo.sh

$ export MYVAR="value-exported"
$ ./echo.sh
value-exported

Explicación:

  • Yo primero configuro $MYVAR para ser una variable de Shell con MYVAR="value". Utilizando echo Puedo repetir su valor porque el eco es parte del caparazón.
  • Entonces creo echo.sh. Ese es un pequeño guión que básicamente hace lo mismo, solo hace eco $MYVAR, pero la diferencia es que se ejecutará en un proceso diferente porque es un script separado.
  • Al llamar echo.sh no produce nada, porque el nuevo proceso no hereda $MYVAR
  • Entonces exporto $MYVAR en mi entorno con el export palabra clave
  • Cuando ahora corro lo mismo echo.sh de nuevo, se hace eco del contenido de $MYVAR porque lo obtiene del medio ambiente

Entonces, para responder a su pregunta:

Depende de dónde se vaya a utilizar una variable, si tiene que exportarla o no.

Usar export para las variables de entorno. Las variables de entorno son una característica del sistema operativo. Las variables de entorno son heredadas por procesos secundarios: si las configura en un shell, están disponibles en todos los programas iniciados por este shell. Las variables utilizadas por muchas aplicaciones o por aplicaciones específicas distintas de shells son variables de entorno. A continuación, se muestran algunos ejemplos de variables de entorno comunes:

  • HOME : Indica el directorio de inicio del usuario, que es donde se encuentran los archivos de configuración por usuario. Utilizado por cualquier programa que lea archivos de configuración por usuario o que necesite conocer la ubicación del directorio de inicio del usuario.
  • PATH – indica dónde encontrar archivos ejecutables para iniciar otros programas. Usado por todos los programas que necesitan iniciar otro programa.
  • LD_LIBRARY_PATH : Indica dónde encontrar archivos de biblioteca dinámica. Utilizado por todos los ejecutables vinculados dinámicamente.
  • EDITOR, VISUAL – indica qué programa ejecutar cuando se necesita un editor. Utilizado por cualquier programa que necesite iniciar un editor de texto.
  • DISPLAY, XAUTHORITY – indica cómo conectarse al servidor X11. Utilizado por clientes X11 (es decir, programas GUI).
  • LESS – las opciones se activan automáticamente cuando less se ejecuta. Usado por less.
  • http_proxy : Indica el proxy web que se utilizará. Utilizado por la mayoría de los navegadores web.

No utilice export para variables de shell. Las variables de shell son una característica del shell como lenguaje de programación. Las variables de shell se utilizan solo dentro del shell donde se establecen; no tienen ningún significado para los programas lanzados por el shell. Las variables del shell se duplican cuando se crea un subshell, como el resto del estado del shell. A continuación, se muestran algunos ejemplos de variables de shell que tienen un significado para los shells populares:

  • PS1 – el mensaje que se mostrará antes de cada comando.
  • IFS – los caracteres que separan palabras en expansiones de variables sin comillas y sustituciones de comandos.
  • HISTFILE – un archivo donde el shell escribirá el historial de comandos.

Además de las variables que utiliza el shell, la mayoría de los scripts de shell utilizan variables para sus propósitos internos.

La mayoría de las variables de entorno (p. Ej. PATH) tiene sentido para una sesión completa y debe establecerse en ~/.profile o un archivo similar. Variables que tienen sentido solo para un shell específico (p. Ej. PS1) debe establecerse en un archivo específico de shell como ~/.bashrc o ~/.zshrc. Consulte ¿Existe un archivo equivalente “.bashrc” leído por todos los shells?

Para las variables internas de bash no es necesario export. De tu ejemplo
HISTTIMEFORMAT es utilizado por bash mismo y no necesita una exportación
MYSQL_HISTFILE es para mysql y eso necesita exportar de otra manera mysql no lo ve.

Comentarios y puntuaciones

Recuerda que tienes la capacidad de reseñar si te fue útil.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *