RANDOMnão é uma variável de ambiente. É uma variável de shell mantida por algumas conchas. Geralmente não é exportado por padrão. É por isso que ele não aparece na saída de env.
Uma vez que foi usado pelo menos uma vez, ele iria aparecer na saída set, o que, por si só, lista as variáveis do shell (e funções) e seus valores na sessão shell atual. Esse comportamento é dependente do shell e usa pdkshno OpenBSD,RANDOM seria listado setmesmo se não fosse usado anteriormente.
O restante desta resposta diz respeito ao que se poderia esperar se RANDOM fosse exportado (ou seja, transformado em uma variável de ambiente).
Exportando-o com export RANDOM tornaria uma variável de ambiente, mas seu uso seria severamente limitado, pois seu valor em um processo filho seria "aleatório, mas estático" (o que significa que seria um número aleatório imutável). O comportamento exato difere entre as conchas.
Estou usando o pdkshOpenBSD no exemplo abaixo e recebo um novo valor aleatório em cada awkexecução (mas o mesmo valor todas as vezes na mesma awkinstância). Usando bash, eu obteria exatamente o mesmo valor aleatório em todas as invocações deawk .
$ awk 'BEGIN { print ENVIRON["RANDOM"], ENVIRON["RANDOM"] }'
25444 25444
$ awk 'BEGIN { print ENVIRON["RANDOM"], ENVIRON["RANDOM"] }'
30906 30906
Em bash, o valor exportado de RANDOMpermaneceria estático, independentemente do uso deRANDOM no shell (onde cada uso de $RANDOMainda daria um novo valor).
Isso ocorre porque cada referência à variável shell RANDOM em bashtorna o acesso shell a sua interno get_random()função para dar a variável um novo valor aleatório, mas o shell não atualiza a variável de ambiente RANDOM . Este é um comportamento semelhante como com outros dinâmicas bashvariáveis, tais como LINENO, SECONDS, BASHPIDetc.
Para atualizar a variável de ambiente RANDOMem bash, você teria que atribuir-lhe o valor da variável de shell RANDOM e re-exportá-lo:
export RANDOM="$RANDOM"
Não está claro para mim se isso teria o efeito colateral adicional de re-semear o gerador de números aleatórios bashou não (mas um palpite fundamentado seria que não existe).
envnão é um comando do shell, pois geralmente não é incorporado ao shell.