จากคำถามอื่น ๆ ของคุณฉันคิดว่าคุณใช้ 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 ของอยู่แล้วซึ่งการเปลี่ยนแปลงไดเรกทอรีสำหรับตัวเองและจากนั้นทันทียุติออกจากเปลือกโดยรอบ มันเริ่มที่ไหน
คุณสามารถลองสิ่งเหล่านี้ด้วยtype
builtin :
$ 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
ส่งออกอะไร