RANDOMbir ortam değişkeni değil. Bazı mermiler tarafından tutulan bir kabuk değişkenidir. Genellikle varsayılan olarak dışa aktarılmaz. Bu yüzden çıktısında görünmüyor env.
Bir zamanlar en azından kullanılan konduktan sonra, bu olur çıktısında göstermek set, hangi kendisi tarafından, listeler geçerli kabuk oturumunda kabuk değişkenleri (ve fonksiyonları) ve bunların değerleri. Bu davranış kabuğa bağlıdır ve pdkshOpenBSD'de kullanıldığında, RANDOMdaha setönce kullanılmasa bile listelenir .
Bu cevabın geri kalanı RANDOM, ihraç edildiğinde ne olabileceği ile ilgilidir (yani bir ortam değişkenine dönüşmüş).
Onu dışa aktarmak export RANDOM, onu bir ortam değişkeni yapacaktır ancak bir alt işlemdeki değeri "rasgele ama statik" olacağı için kullanımı ciddi şekilde sınırlı olacaktır (yani, değişmeyen bir rasgele sayı olacaktır). Tam davranış kabukları arasında değişir.
pdkshAşağıdaki örnekte OpenBSD kullanıyorum ve her awkçalıştırmada yeni bir rastgele değer elde ediyorum (ancak aynı durumda her zaman aynı değer awk). Kullanarak bash, tüm davetlerde tam olarak aynı rastgele değeri elde ederdim awk.
$ awk 'BEGIN { print ENVIRON["RANDOM"], ENVIRON["RANDOM"] }'
25444 25444
$ awk 'BEGIN { print ENVIRON["RANDOM"], ENVIRON["RANDOM"] }'
30906 30906
İçinde bash, dışa aktarılan değer , kabuktaki RANDOMkullanımdan bağımsız olarak statik kalır RANDOM(her bir kullanımın $RANDOMhala yeni bir değer vereceği).
Her referans Bunun nedeni kabuk değişkeni RANDOM içinde bashkabuk erişim iç kılan get_random()işlevi değişkeni yeni bir rastgele değer vermek için, ama kabuk güncelleme gelmez ortam değişkeni RANDOM . Bu, diğer dinamik gibi davranış benzerdir bashgibi değişkenler, LINENO, SECONDS, BASHPIDvs.
Ortam değişkeni güncellemek için RANDOMde bash, bunu kabuk değişkeninin değerini atamak zorunda kalacak RANDOM ve yeniden ihracat it:
export RANDOM="$RANDOM"
Bunun rasgele sayı üretecinin tekrar tohumlanmasında ek bir yan etkisinin olup olmayacağı benim için net bashdeğil (ama eğitimli bir tahmin yapmaz).
envbir kabuk komutu değildir, çünkü genellikle kabuğun içine yerleştirilmez.