आपके अन्य प्रश्नों से मैं इसे ले रहा हूँ आप ओएस एक्स का उपयोग कर रहे हैं। ओएस एक्स पर डिफ़ॉल्ट एचएफएस + फाइलसिस्टम केस-असंवेदनशील है: आपके पास एक ही निर्देशिका में "एबीसी" और "एबीसी" नामक दो फाइलें नहीं हो सकती हैं, और एक्सेस करने की कोशिश कर रहे हैं। या तो नाम एक ही फ़ाइल के लिए मिल जाएगा। यही बात Cygwin के तहत भी हो सकती है, या केस-असंवेदनशील फाइल सिस्टम के साथ (जैसे FAT32 या साइग्विन के ciopfs ) के साथ कहीं भी हो सकती है।
क्योंकि grepयह एक वास्तविक निष्पादन योग्य है, इसे फाइलसिस्टम (निर्देशिका में PATH) पर देखा जाता है। जब आपका खोल या /usr/binतो में दिखता हैgrepGREP यह grepनिष्पादन योग्य लगेगा ।
शेल बिल्डिंग्स हैं फाइलसिस्टम पर नहीं देखा जाता है: क्योंकि वे अंदर निर्मित होते हैं, वे शेल के अंदर (केस-संवेदी) स्ट्रिंग तुलना के माध्यम से पहुंचते हैं।
आप जो भी सामना कर रहे हैं वह एक दिलचस्प मामला है। जबकि cdएक अंतर्निहित, पहुंच-केस-संवेदी है, CDएक निष्पादन योग्य के रूप में पाया जाता है /usr/bin/cd। cdनिष्पादन बहुत बेकार है क्योंकि cdवर्तमान खोल निष्पादन वातावरण को प्रभावित करता है, यह हमेशा एक खोल के रूप में प्रदान की जाती है नियमित रूप से निर्मित है, लेकिन वहाँ एक है cdनिष्पादन POSIX के लिये वैसे भी, जो अपने आप के लिए निर्देशिका बदलता है और फिर तुरंत समाप्त हो जाता है, आसपास के खोल छोड़ने यह कहाँ शुरू हुआ
आप इन्हें typeबिलिन के साथ आज़मा सकते हैं :
$ type cd
cd is a shell builtin
$ type CD
CD is /usr/bin/CD
typeआपको बताता है कि जब आप उस कमांड को चलाते हैं तो शेल क्या करेगा। जब आप चलाते हैं cdतो आप बिलिन तक पहुँचते हैं, लेकिन CDनिष्पादन योग्य पाता है। अन्य बिल्डरों के लिए, बिलिन और निष्पादन योग्य यथोचित संगत (प्रयास echo) होंगे, लेकिन इसके लिए cdसंभव नहीं है।
alias GREPया जाँच करेंwhich GREP।