J'ai remarqué dans mon .bashrc
que certaines lignes ont export
devant eux, comme
export HISTTIMEFORMAT="%b-%d %H:%M "
...
export MYSQL_HISTFILE="/root/.mysql_history"
alors que d'autres ne le font pas, comme
HISTSIZE=100000
Je me demande si, premièrement, c'est correct, et deuxièmement quelle est la règle pour utiliser export
dans .bashrc
.
Réponse acceptée :
Vous avez seulement besoin d'export
pour les variables qui devraient être "vues" par d'autres programmes que vous lancez dans le shell, tandis que celles qui ne sont utilisées qu'à l'intérieur du shell lui-même n'ont pas besoin d'être export
éd.
Voici ce que dit la page de manuel :
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.
Cela peut être démontré avec ce qui suit :
$ MYVAR="value"
$ echo ${MYVAR}
value
$ echo 'echo ${MYVAR}' > echo.sh
$ chmod +x echo.sh
$ ./echo.sh
$ export MYVAR="value-exported"
$ ./echo.sh
value-exported
Explication :
- J'ai d'abord défini
${MYVAR}
être une variable Shell avecMYVAR="value"
. Utilisation deecho
Je peux faire écho à sa valeur car echo fait partie du shell. - Puis je crée
echo.sh
. C'est un petit script qui fait essentiellement la même chose, il renvoie simplement${MYVAR}
, mais la différence est qu'il s'exécutera dans un processus différent car il s'agit d'un script distinct. - Lors de l'appel de
echo.sh
il ne produit rien, car le nouveau processus n'hérite pas de${MYVAR}
- Puis j'exporte
${MYVAR}
dans mon environnement avec leexport
mot-clé - Quand j'exécute maintenant le même
echo.sh
encore une fois, il fait écho au contenu de${MYVAR}
parce qu'il l'obtient de l'environnement
Alors pour répondre à ta question :
Cela dépend de l'endroit où une variable va être utilisée, si vous devez l'exporter ou non.
En relation :Comment exporter les journaux de chat Google ? ?