बिजीबॉक्स को काफी उपन्यास तरीके से डिज़ाइन किया गया है, जब आप अपने / बिन निर्देशिकाओं में घूमना शुरू करते हैं तो काफी भ्रमित हो सकते हैं।
MSalters के रूप में ने संकेत दिया, बिजीबॉक्स सिर्फ एक निष्पादन योग्य है। लेकिन यह उस प्रतीकात्मक लिंक पर निर्भर करता है, जो इसमें प्रत्येक "कमांड" के लिए निष्पादन योग्य बनाया जा रहा है। सिम्लिंक नाम को जानने के साथ इसे शुरू किया गया था, यह उस कमांड के लिए C फ़ंक्शन को चलाना जानता है।
इस प्रकार, मेरी PuppyLinux की शुरुआत 5.2.8 लुसीड / बिन निर्देशिका की तरह लगती है ...
sh-4.1# ls -l
total 4889
lrwxrwxrwx 1 root root 7 2011-08-17 10:49 [ -> busybox
lrwxrwxrwx 1 root root 7 2011-08-17 10:49 [[ -> busybox
lrwxrwxrwx 1 root root 7 2011-08-17 10:49 addgroup -> busybox
lrwxrwxrwx 1 root root 7 2011-08-17 10:49 adduser -> busybox
lrwxrwxrwx 1 root root 7 2011-08-17 10:49 ash -> busybox
-rwxr-xr-x 1 root root 2844 2011-08-17 11:04 autologinroot
lrwxrwxrwx 1 root root 4 2011-08-17 10:49 awk -> gawk
lrwxrwxrwx 1 root root 7 2011-08-17 10:49 basename -> busybox
-rwxr-xr-x 1 root root 805960 2011-08-17 11:04 bash
-r-xr-xr-x 1 root root 6835 2011-01-21 01:29 bashbug
lrwxrwxrwx 1 root root 7 2011-08-17 10:49 bbconfig -> busybox
-rwxr-xr-x 1 root root 30200 2011-08-17 11:04 bunzip2
lrwxrwxrwx 1 root root 7 2011-08-17 10:49 bunzip2-BB-NOTUSED -> busybox
-rwxr-xr-x 1 root root 637960 2011-08-17 11:04 busybox
-rwxr-xr-x 1 root root 30200 2011-08-17 11:04 bzcat
lrwxrwxrwx 1 root root 7 2011-08-17 10:49 bzcat-BB-NOTUSED -> busybox
ध्यान दें कि अधिकांश आदेशों के प्रति सहानुभूति है busybox
। इसमें ash
बूट ऑपरेशन के दौरान उपयोग किए जाने वाले बहुत ही न्यूनतम शैल शामिल हैं । यह भी ध्यान दें कि वितरण लेखक ने स्टैंडअलोन कमांड को शामिल करने के लिए चुना bunzip2
और bzcat
व्यस्त बॉक्स संस्करणों का उपयोग करने के बजाय। सहानुभूति bunzip-BB-NOTUSED
औरbzcat-BB-NOTUSED
वास्तव में आवश्यक नहीं हैं, लेकिन दस्तावेज़ में मदद करता है कि सिम्लिंक की लागत के लिए क्या हो रहा है।
यह भी ध्यान दें कि एक निर्देशिका सूची जो कि सिम्कलिंक के बजाय साइलिंक्स ( ls -lL
या ls -l --dereference
) के लक्ष्य के लिए रिपोर्ट करती है, प्रत्येक कमांड के आकार को उसी के समान रिपोर्ट करेगी busybox
। इस प्रकार -L
विकल्प के साथ एक ही सूची दिखाता है ...
sh-4.1# ls -lL
total 60402
-rwxr-xr-x 1 root root 637960 2011-08-17 11:04 [
-rwxr-xr-x 1 root root 637960 2011-08-17 11:04 [[
-rwxr-xr-x 1 root root 637960 2011-08-17 11:04 addgroup
-rwxr-xr-x 1 root root 637960 2011-08-17 11:04 adduser
-rwxr-xr-x 1 root root 637960 2011-08-17 11:04 ash
-rwxr-xr-x 1 root root 2844 2011-08-17 11:04 autologinroot
-rwxr-xr-x 1 root root 317880 2011-08-17 11:04 awk
-rwxr-xr-x 1 root root 637960 2011-08-17 11:04 basename
-rwxr-xr-x 1 root root 805960 2011-08-17 11:04 bash
-r-xr-xr-x 1 root root 6835 2011-01-21 01:29 bashbug
-rwxr-xr-x 1 root root 637960 2011-08-17 11:04 bbconfig
-rwxr-xr-x 1 root root 30200 2011-08-17 11:04 bunzip2
-rwxr-xr-x 1 root root 637960 2011-08-17 11:04 bunzip2-BB-NOTUSED
-rwxr-xr-x 1 root root 637960 2011-08-17 11:04 busybox
-rwxr-xr-x 1 root root 30200 2011-08-17 11:04 bzcat
-rwxr-xr-x 1 root root 637960 2011-08-17 11:04 bzcat-BB-NOTUSED
बिजीबॉक्स का उद्देश्य आदेश के एक आम सेट के लिए आवश्यक मेमोरी (और "पदचिह्न") को कम करने के लिए अपने भीतर कोड का अधिकतम पुन: उपयोग है ... बिना शेल की आवश्यकता के।
बैश और अन्य गोले एक ही चीज को पूरा करते हैं। लेकिन ऐसा करने के लिए, वे अपने स्वयं के कमांडलाइन वातावरण को लागू करते हैं। यह उद्देश्य कई शेल कार्यात्मकताओं के लिए बहुत पुरातन वाक्यविन्यास के कुछ कारणों में से एक भी है।
मैं वर्तमान में बैश फ़ंक्शंस की लाइब्रेरी के लिए इस "बिजीबॉक्स तकनीक" का उपयोग कर रहा हूं और विभिन्न बशीज़ के लिए रैपर का उपयोग करना आसान है । यह मुझे आसानी से --help
विकल्प के साथ "विस्तार" आदेश देता है और उपलब्ध होने पर GUI संस्करणों को बंद कर देता है।