setएक शेल बिल्डिन है , जिसका उपयोग सेट और अनसेट शेल विकल्पों और स्थितीय मापदंडों के लिए किया जाता है।
तर्कों के बिना, setसभी शेल वैरिएबल (वर्तमान सत्र में पर्यावरण चर और वैरिएबल दोनों) को प्रिंट करेंगे जो वर्तमान लोकल में क्रमबद्ध हैं ।
आप बैश डॉक्यूमेंटेशन भी पढ़ सकते हैं ।
कुछ कैवियट हैं।
set "$var"को varमान प्रदान करेगा $1। यदि इसके $varसाथ -या शुरू होता है +, तो $varसामग्री को शेल विकल्पों के अनुक्रम के रूप में माना जाता था। यदि $varकोई अमान्य विकल्प हैं, तो अधिकांश POSIX गोले त्रुटि को प्रिंट करेंगे। yashऔर zshमें sh, kshअनुकरण केवल त्रुटि मुद्रण नहीं कर रहे हैं, लेकिन यह भी मान्य विकल्प सेट। जबकि yashस्टॉप पहले अमान्य विकल्प पर विकल्प की स्थापना, zshउन सभी को आवंटित करेगा। इन yash:
var=-fxd; set "$var"
fऔर xमें पेश करेंगे $-, जबकि:
var=fdx; set "$var"
में ही fमौजूद है $-। दोनों मामलों में, fऔर में और एमुलेशन के साथ xउपस्थित होगा ।$-zshshksh
आपको उस स्थिति से बचाने के लिए, आप --पहले पैरामीटर के रूप में स्थितीय पैरामीटर सेट करने के लिए पास कर सकते हैं, यहां तक कि इसके साथ शुरू -या +:
var=-fdx; set -- "$var"
आवंटित करेगा $varकरने के लिए $1भले ही उसकी सामग्री,।
set -- आगे किसी भी तर्क के बिना सभी स्थिति मापदंडों को परेशान करेगा।
यदि पहला तर्क है -, तो व्यवहार अनिर्दिष्ट है। सभी ज्ञात POSIX गोले परेशान xऔर vविकल्प (को छोड़कर posh), और स्थितिगत -मापदंडों के बाद कुछ भी असाइन करेंगे :
set -xv - -f
आवंटित करेगा -fकरने के लिए $1। set -ने भी स्थितिगत मापदंडों को परेशान नहीं किया। शिल्पी ओश भी ऐसा ही व्यवहार करते हैं। हिरलूम श न परेशान vऔर xविकल्प।
एकमात्र POSIX शेल अपवाद है yash, जो -पहले स्थितीय पैरामीटर के रूप में व्यवहार करता है:
$ yash -c 'set -xv - -f; printf "%s\n" "$@"; printf "%s\n" "$-"'
+ printf %s\n - -f
-
-f
+ printf %s\n cvx
cvx
यदि -तर्क में मौजूद हो तो भी शिल्ली कुछ नहीं कर रहा है:
$ schily-sh -c 'set -v - -f; printf "%s\n" "$@"; printf "%s\n" "$-"'
<blank line>
s
$ schily-sh -c 'set -v -- -f; printf "%s\n" "$@"; printf "%s\n" "$-"'
-f
vs