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 conMYVAR="value". UsandoechoPuedo 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.shno genera nada, porque el nuevo proceso no hereda${MYVAR} - Luego exporto
${MYVAR}en mi entorno conexportpalabra clave - Cuando ahora ejecuto el mismo
echo.shnuevamente, 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?