GNU/Linux >> Tutoriels Linux >  >> Linux

Utilisation de l'exportation dans .bashrc ?

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 avec MYVAR="value" . Utilisation de echo 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 le export 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 ? ?
Linux
  1. Auto-complétion Git ?

  2. Utilisation des déclarations de cas dans Bash

  3. Commande d'exportation Linux

  4. Connexion au WiFi à l'aide du shell adb

  5. Itérer sur la variable $ PATH à l'aide d'un script shell

Variable d'exportation bash

Utiliser Runit sur Devuan

Commande d'exportation sous Linux

Comment exporter définitivement une variable sous Linux ?

Restaurer ~/.bashrc sans utiliser les commandes bash

Installer et utiliser XeTeX