GNU/Linux >> Tutoriales Linux >  >> Linux

¿Usando exportar en .bashrc?

Lo he notado en mi .bashrc que algunas líneas tienen export delante de ellos, como

export HISTTIMEFORMAT="%b-%d  %H:%M  "
...
export MYSQL_HISTFILE="/root/.mysql_history"

mientras que otros no, como

HISTSIZE=100000

Me pregunto si, en primer lugar, esto es correcto y, en segundo lugar, cuál es la regla para usar export en .bashrc .

Respuesta aceptada:

Solo necesitas export para las variables que deben ser "vistas" por otros programas que inicie en el shell, mientras que las que solo se usan dentro del shell no necesitan ser export ed.

Esto es lo que dice la página del 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:

  • Primero establecí ${MYVAR} ser una variable de Shell con MYVAR="value" . Usando echo Puedo hacer eco de su valor porque echo es parte del shell.
  • Luego creo echo.sh . Ese es un pequeño script que básicamente hace lo mismo, solo hace eco de ${MYVAR} , pero la diferencia es que se ejecutará en un proceso diferente porque es un script separado.
  • Al llamar a echo.sh no genera nada, porque el nuevo proceso no hereda ${MYVAR}
  • Luego exporto ${MYVAR} en mi entorno con export palabra clave
  • Cuando ahora ejecuto el mismo echo.sh nuevamente, repite el contenido de ${MYVAR} porque lo obtiene del medio ambiente

Entonces, para responder a tu pregunta:

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

Relacionado:¿Cómo exportar los registros de chat de Google?
Linux
  1. ¿Errores de captura en la sustitución de comandos usando "-o Errtrace" (es decir, establecer -e)?

  2. Freebsd:¿cómo exportar una carpeta a una subred usando Nfs en Freebsd 9.0?

  3. ¿Qué hace Echo $? ¿¿Hacer??

  4. ¿División básica usando variable y entero?

  5. Uso de declaraciones de casos en Bash

Variable de exportación de bash

Usando Runit en Devuan

Uso de UFW como lista negra de IP

Git Autocompletar?

Comando de exportación en Linux

Restaurar ~/.bashrc sin usar comandos bash