RANDOMएक पर्यावरण चर नहीं है। यह कुछ शेल द्वारा बनाए गए शेल वेरिएबल है। यह आम तौर पर डिफ़ॉल्ट रूप से निर्यात नहीं किया जाता है। यही कारण है कि यह के उत्पादन में नहीं दिखा है env।
एक बार इसका उपयोग कम से कम एक बार करने के बाद, यह आउटपुट में दिखाई देगाset , जो स्वयं, शेल शेल (और फ़ंक्शंस) और वर्तमान शेल सत्र में उनके मूल्यों को सूचीबद्ध करता है। यह व्यवहार शेल पर निर्भर है और pdkshOpenBSD पर उपयोग कर रहा है, भले ही पहले उपयोग नहीं 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यह शेल कमांड नहीं है क्योंकि यह आमतौर पर शेल में नहीं बनाया जाता है।