RANDOM
পরিবেশের পরিবর্তনশীল নয়। এটি কয়েকটি শাঁস দ্বারা পরিচালিত একটি শেল ভেরিয়েবল। এটি সাধারণত ডিফল্টরূপে রফতানি হয় না। এ কারণেই এটি এর আউটপুটে প্রদর্শিত হবে না env
।
একবার এটি একবার অন্তত ব্যবহার করা হয়েছে, এটা হবে আউটপুট দেখা set
, যা, নিজে, তালিকা শেল ভেরিয়েবল (এবং ফাংশন) এবং তাদের মান বর্তমান শেল সেশনে। এই আচরণটি শেলের উপর নির্ভর করে এবং pdksh
ওপেনবিএসডি ব্যবহার করে, পূর্বে ব্যবহৃত না হলেও RANDOM
তালিকাভুক্ত হবে set
।
এই উত্তরটির বাকী অংশটি RANDOM
রফতানি করা হলে (যেমন পরিবেশের পরিবর্তনশীলে রূপান্তরিত) হয়ে গেলে কী ঘটবে বলে আশা করা যায় concerns
এর সাথে রফতানি করা এটিকে export RANDOM
পরিবেশের পরিবর্তনযোগ্য করে তুলবে তবে এর ব্যবহার মারাত্মকভাবে সীমাবদ্ধ থাকবে কারণ একটি শিশু প্রক্রিয়াতে এর মান হবে "এলোমেলো তবে স্থির" (যার অর্থ এটি অপরিবর্তনীয় এলোমেলো সংখ্যা হবে)। সঠিক আচরণ শাঁসের মধ্যে পার্থক্য করে।
আমি pdksh
নীচের উদাহরণে ওপেনবিএসডি ব্যবহার করছি এবং আমি প্রতিটি 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
এটি শেল কমান্ড নয় কারণ এটি সাধারণত শেলের মধ্যে নির্মিত হয় না।