RANDOMn'est pas une variable d'environnement. C'est une variable shell maintenue par certains shells. Il n'est généralement pas exporté par défaut. C'est pourquoi il n'apparaît pas dans la sortie de env.
Une fois qu'il a été utilisé au moins une fois, il serait affiché dans la sortie set, qui, par lui - même, énumère les variables shell (et fonctions) et leurs valeurs dans la session shell en cours. Ce comportement dépend du shell et l'utilisation pdkshd'OpenBSD RANDOMserait répertorié setmême s'il n'était pas utilisé auparavant.
Le reste de cette réponse concerne ce qui pourrait se produire s'il RANDOMétait exporté (c'est-à-dire transformé en variable d'environnement).
L'exporter avec en export RANDOMferait une variable d'environnement mais son utilisation serait sévèrement limitée car sa valeur dans un processus enfant serait "aléatoire mais statique" (ce qui signifie que ce serait un nombre aléatoire immuable). Le comportement exact diffère entre les coques.
J'utilise pdkshsur OpenBSD dans l'exemple ci-dessous et j'obtiens une nouvelle valeur aléatoire à chaque awkexécution (mais la même valeur à chaque fois dans la même awkinstance). En utilisant bash, j'obtiendrais exactement la même valeur aléatoire dans toutes les invocations de awk.
$ awk 'BEGIN { print ENVIRON["RANDOM"], ENVIRON["RANDOM"] }'
25444 25444
$ awk 'BEGIN { print ENVIRON["RANDOM"], ENVIRON["RANDOM"] }'
30906 30906
Dans bash, la valeur exportée de RANDOMresterait statique quelle que soit l'utilisation de RANDOMdans le shell (où chaque utilisation de $RANDOMdonnerait toujours une nouvelle valeur).
En effet, chaque référence à la variable shell RANDOM dans bashle shell accède à sa get_random()fonction interne pour donner à la variable une nouvelle valeur aléatoire, mais le shell ne met pas à jour la variable d'environnement RANDOM . Ceci est similaire dans le comportement comme avec d' autres dynamiques bashvariables, telles que LINENO, SECONDS, BASHPIDetc.
Pour mettre à jour la variable d'environnement RANDOMdans bash, vous devez lui affecter la valeur de la variable shell RANDOM et la réexporter:
export RANDOM="$RANDOM"
Il n'est pas clair pour moi si cela aurait l'effet secondaire supplémentaire de réensemencer le générateur de nombres aléatoires bashou non (mais une supposition éclairée serait que ce n'est pas le cas).
envn'est pas une commande shell car elle n'est généralement pas intégrée au shell.