จากคำถามอื่น ๆ ของคุณฉันคิดว่าคุณใช้ OS X ระบบไฟล์ HFS + เริ่มต้นบน OS X นั้นไม่ตรงตามตัวพิมพ์ใหญ่ - ตัวพิมพ์เล็ก: คุณไม่สามารถมีสองไฟล์ที่เรียกว่า "abc" และ "ABC" ในไดเรกทอรีเดียวกันและพยายามเข้าถึง ชื่อใดจะได้รับไฟล์เดียวกัน สิ่งเดียวกันสามารถเกิดขึ้นได้ภายใต้ Cygwin หรือกับระบบไฟล์ที่ไม่คำนึงถึงขนาดตัวพิมพ์ (เช่น FAT32 หรือciopfs ) ได้ทุกที่
เนื่องจากgrepเป็นไฟล์ปฏิบัติการจริงจึงค้นหาระบบไฟล์ (ในไดเรกทอรีของPATH) เมื่อเปลือกของคุณมอง/usr/binหาgrepหรือGREPจะพบว่าgrepปฏิบัติการ
Shell builtins ไม่ได้ค้นหาในระบบไฟล์: เนื่องจากมีการสร้างอยู่ภายในจึงสามารถเข้าถึงได้ผ่านการเปรียบเทียบสตริง (คำนึงถึงตัวอักษร) ในเชลล์
สิ่งที่คุณกำลังเผชิญเป็นกรณีที่น่าสนใจ ในขณะที่cdเป็นแบบบิวด์อินที่สามารถเข้าถึงได้แบบตรงCDตามตัว/usr/bin/cdพิมพ์ cdปฏิบัติการสวยไร้ประโยชน์เพราะcdมีผลกระทบต่อสภาพแวดล้อมในการดำเนินเปลือกปัจจุบันก็มีให้เสมอเป็นเปลือกปกติในตัวแต่มีการcdปฏิบัติการเพื่อประโยชน์ POSIX ของอยู่แล้วซึ่งการเปลี่ยนแปลงไดเรกทอรีสำหรับตัวเองและจากนั้นทันทียุติออกจากเปลือกโดยรอบ มันเริ่มที่ไหน
คุณสามารถลองสิ่งเหล่านี้ด้วยtypebuiltin :
$ type cd
cd is a shell builtin
$ type CD
CD is /usr/bin/CD
typeบอกคุณว่าเชลล์จะทำอย่างไรเมื่อคุณเรียกใช้คำสั่งนั้น เมื่อคุณเรียกใช้cdคุณเข้าถึง builtin แต่CDพบว่าปฏิบัติการ สำหรับ builtins อื่น ๆ builtin และ executable จะเข้ากันได้อย่างสมเหตุสมผล (ลองecho) แต่cdก็เป็นไปไม่ได้
alias GREPหรือwhich GREPส่งออกอะไร