Solo necesita export
variables que deberían ser "vistas" por otros programas que inicie en el shell, mientras que las que solo se usan dentro del shell no necesitan ser export
editadas.
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 configuré
${MYVAR}
para ser una variable de Shell con MYVAR="value"
. Usando echo
puedo hacer eco de su valor porque echo es parte del shell.
- Entonces creo
echo.sh
. Es un pequeño script 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.
- Cuando se llama
echo.sh
no genera nada, porque el nuevo proceso no hereda${MYVAR}
- Luego exporto
${MYVAR}
a mi entorno con la export
palabra clave
- Cuando ahora vuelvo a ejecutar lo mismo
echo.sh
, hace eco del contenido ${MYVAR}
porque lo obtiene del entorno
Entonces para responder a su pregunta:
Depende de dónde se vaya a utilizar una variable, ya sea que tenga que exportarla o no.