बिलियन कमांड क्या करता है?


35

मुझे पता है कि एक अंतर्निहित आदेश क्या है, लेकिन builtinखुद क्या करता है? निष्पादन which lsमुझे दिखाता है /bin/ls, लेकिन which builtinरिटर्न निष्पादित करने से कुछ नहीं होता है।

man builtinबस मुझे बिलिन कमांड की एक सूची देता है, जिनमें से एक है builtin। बाकी मैन पेज बताते हैं कि एक बिल्डिन क्या है, लेकिन क्या नहींbuiltin है।

builtin --help मुझे बताता है builtin: usage: builtin [shell-builtin [arg ...]] लेकिन फिर भी ऐसा नहीं है।

क्या यह बाश का हिस्सा है कि अन्य अंतर्निहित आदेश नहीं हैं?



3
which builtinकोई परिणाम नहीं देता है, क्योंकि बाहरी आदेशोंwhich के स्थान की रिपोर्ट करता है । यदि आप शेल से पूछते हैं , तो यह आपको बताएगा, अनिश्चित रूप से, वह । आप के साथ एक ही मिल जाएगा , आदिtype builtinbuiltin is a shell builtinaliasset
टोबी स्पीट

1
builtin help builtin
Theonlygusti

जवाबों:


50

builtinआदेश बनाता है सुनिश्चित करें कि आप नहीं बल्कि एक ही नाम के साथ एक और आदेश चलाकर से खोल निर्मित आदेश के संस्करण चलाते हैं।

उदाहरण के लिए, मान लें कि आपने cdनिर्देशिकाओं को बदलने के लिए प्रत्येक अतिरिक्त स्थिति को मुद्रित करने के लिए एक शेल फ़ंक्शन को परिभाषित किया है । लेकिन आपने इसे गड़बड़ कर दिया है और अब आप निर्देशिकाओं को सही ढंग से नहीं बदल सकते हैं। तो अब आप builtin cd ~अपने टूटे हुए शेल फ़ंक्शन को चलाने के बिना अपने घर निर्देशिका में सफलतापूर्वक सीडी टाइप कर सकते हैं ।

और वैसे, बाश मैन पेज की मेरी कॉपी में "शेल बिल्डिन कमैंट्स" नामक एक अनुभाग है, और यह builtinउस अनुभाग में कमांड के अर्थ को परिभाषित करता है (नीचे की ओर लिखा गया है)।

बिलियन शेल-बिलिन [तर्क]

    निर्दिष्ट शेल बिलिन को निष्पादित करें, इसे तर्क देते हुए, और
    अपनी निकास स्थिति वापस करें। किसी फ़ंक्शन को परिभाषित करते समय यह उपयोगी है
    जिसका नाम शेल बिल्डिन के समान है, को बनाए रखना
    फ़ंक्शन के भीतर बिलिन की कार्यक्षमता। सीडी बिल्डिन है
    आमतौर पर इस तरह से फिर से परिभाषित किया गया।

    यदि शेल-बिलिन शेल शेलिन नहीं है, तो रिटर्न स्टेटस गलत है
    आदेश।

14
अच्छा जवाब। लेकिन मुझे आश्चर्य होता है, आप यह कैसे सुनिश्चित कर सकते हैं कि builtinकमांड बैश से वास्तविक बिलिन है?
पचोपाको

14
@Pacopaco: आप :-) नहीं कर सकते। आप ओवरराइड भी कर सकते हैं :। फिर कोई काम नहीं करता। builtinfunction builtin { echo "Hi from builtin :-)"; }builtin
साल्स्के

12
@Pacopaco, type builtinआपको बताएगा कि क्या यह असली है builtin। जब तक typeएक गैर-बिल्डिन के साथ प्रतिस्थापित नहीं किया गया है type...
टोबी स्पाइट

10
ओह ... दुर्भाग्य से कोई भी हो सकता है: उर्फ ​​अनसेट = "इको अनसेट ओवरराइड है"; alias alias = "इको उर्फ ​​अतिवादित है" ... इसलिए यहाँ कोई किस्मत नहीं।
ओलिवियर दुलैक

8
मुझे यह चल रही चर्चा पसंद है!
सैम वीवर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.