~
$HOME
कई गोले द्वारा प्रदान किए जाने के लिए एक उपनाम है , लेकिन $HOME
अधिक सार्वभौमिक है। $HOME
वास्तव में शेल को पर्यावरण चर घर में डालने (स्थानापन्न) करने के लिए कहता है। काफी अलग-अलग पर्यावरणीय चर हैं जिन्हें प्रतिस्थापित किया जा सकता है, env
सूची के लिए प्रयास करें । ध्यान दें कि ~
हमेशा पहचाना नहीं जाता है जब यह एक शब्द की शुरुआत में नहीं होता है। तुलना के लिए इन दो आदेशों का प्रयास करें:
ls /~
ls /$HOME
पहले एलएस निष्पादन योग्य के लिए पास हो जाता है, /~
फिर ~
रूट डायरेक्टरी नामक एक फाइल को देखने की कोशिश करता है , दूसरा फैलता है $HOME
और बन जाता है //home/user
जो तब कमांड-लाइन तर्क के रूप में एलएस निष्पादन योग्य के लिए पारित हो जाता है। सभी POSIX सिस्टम (POSIX, UNIX और Linux सिस्टम कैसे काम करते हैं, इसके लिए मानक है) एकाधिक स्लैश को एक स्लैश के समान माना जाता है, इसलिए //home/user
यह कहने के समान है /home/user
। ~username
पासवार्ड फ़ाइल में उपयोक्तानाम को देखने और उनके होम डायरेक्टरी को वापस करने के लिए शेल को बताने के लिए एक शॉर्टकट है। कोई समान पर्यावरण चर नहीं है। ये सभी प्रतिस्थापन शेल द्वारा किए जाते हैं और उनमें से अधिकांश द्वारा समर्थित होते हैं, लेकिन केवल पर्यावरण चर जैसे $HOME
अन्य शेल द्वारा समर्थित होने की गारंटी है। इसके अलावा,cd
वास्तव में एक अंतर्निहित कमांड है। यह एक विशेष निर्देश है जो शेल को निर्देशिकाओं को बदलने के लिए कहता है। यह अन्य शेल बिल्ट-इन की तरह नहीं है जिसे एक अलग निष्पादन योग्य के रूप में लागू किया जा सकता echo
है क्योंकि यह शेल प्रक्रिया की एक मूलभूत विशेषता को बदलने के लिए उपयोग किया जाता है। echo
केवल प्रदर्शन के कारणों के लिए निर्मित एक शेल है, लेकिन UNIX के अच्छे पुराने दिनों में, यह केवल तब ही उपलब्ध था जब यह स्वयं निष्पादन योग्य हो /bin/echo
।