RANDOM
एक पर्यावरण चर नहीं है। यह कुछ शेल द्वारा बनाए गए शेल वेरिएबल है। यह आम तौर पर डिफ़ॉल्ट रूप से निर्यात नहीं किया जाता है। यही कारण है कि यह के उत्पादन में नहीं दिखा है env
।
एक बार इसका उपयोग कम से कम एक बार करने के बाद, यह आउटपुट में दिखाई देगाset
, जो स्वयं, शेल शेल (और फ़ंक्शंस) और वर्तमान शेल सत्र में उनके मूल्यों को सूचीबद्ध करता है। यह व्यवहार शेल पर निर्भर है और pdksh
OpenBSD पर उपयोग कर रहा है, भले ही पहले उपयोग नहीं RANDOM
किया गया हो , तब भी इसे सूचीबद्ध किया जाएगा set
।
इस जवाब की बाकी चिंताएं हैं कि क्या होने की उम्मीद की जा सकती है अगर RANDOM
निर्यात किया गया था (यानी एक पर्यावरण चर में बदल गया)।
इसके साथ निर्यात export RANDOM
करने से यह एक पर्यावरण चर बन जाएगा, लेकिन इसका उपयोग गंभीर रूप से सीमित होगा क्योंकि एक बच्चे की प्रक्रिया में इसका मूल्य "यादृच्छिक लेकिन स्थिर" होगा (इसका अर्थ यह अपरिवर्तित यादृच्छिक संख्या होगी)। सटीक व्यवहार गोले के बीच भिन्न होता है।
मैं pdksh
नीचे दिए गए उदाहरण में OpenBSD पर उपयोग कर रहा हूं और मुझे प्रत्येक awk
रन में एक नया यादृच्छिक मान मिलता है (लेकिन समान उदाहरण के भीतर हर बार समान मूल्य awk
)। का उपयोग करते हुए bash
, मुझे सभी चालान में बिल्कुल समान मूल्य मिलेगा awk
।
$ awk 'BEGIN { print ENVIRON["RANDOM"], ENVIRON["RANDOM"] }'
25444 25444
$ awk 'BEGIN { print ENVIRON["RANDOM"], ENVIRON["RANDOM"] }'
30906 30906
में bash
, का निर्यात मूल्य RANDOM
के उपयोग की परवाह किए बिना स्थिर रहना होगा RANDOM
खोल में (जहां से प्रत्येक उपयोग $RANDOM
अभी भी एक नया मान देना होगा)।
इसका कारण यह है करने के लिए प्रत्येक संदर्भ है खोल चर RANDOM
में bash
शेल एक्सेस अपने आंतरिक बनाता get_random()
चर एक नई यादृच्छिक मूल्य देने के लिए समारोह, लेकिन खोल अपडेट नहीं करता वातावरण चर RANDOM
। यह अन्य गतिशील के साथ के रूप में व्यवहार में समान है bash
जैसे चर, LINENO
, SECONDS
, BASHPID
आदि
वातावरण चर का अद्यतन करने के लिए RANDOM
में bash
, आप इसे खोल चर का मान आवंटित करने के लिए होता है RANDOM
और पुनः निर्यात यह:
export RANDOM="$RANDOM"
मेरे लिए यह स्पष्ट नहीं है कि इससे रैंडम नंबर जनरेटर को री-सीडिंग करने का अतिरिक्त साइड इफेक्ट होगा bash
या नहीं (लेकिन एक शिक्षित अनुमान यह होगा कि यह नहीं है)।
env
यह शेल कमांड नहीं है क्योंकि यह आमतौर पर शेल में नहीं बनाया जाता है।