Dari pertanyaan Anda yang lain saya ambil Anda menggunakan OS X. Sistem file HFS + default pada OS X adalah case-insensitive: Anda tidak dapat memiliki dua file yang disebut "abc" dan "ABC" di direktori yang sama, dan mencoba mengakses salah satu nama akan sampai ke file yang sama. Hal yang sama dapat terjadi di bawah Cygwin, atau dengan sistem file case-insensitive (seperti FAT32 atau ciopfs ) di mana saja.
Karena grep ini adalah executable yang nyata, ia mencari di sistem file (di direktori PATH). Ketika shell Anda mencari /usr/binsalah satu grepatau GREPitu akan menemukan grepexecutable.
Shell builtins tidak dicari pada sistem file: karena mereka built-in, mereka diakses melalui perbandingan string (case-sensitive) di dalam shell itu sendiri.
Apa yang Anda temui adalah kasus yang menarik. Sedangkan cdbuiltin, diakses case-sensitive, CDditemukan sebagai executable /usr/bin/cd. The cddieksekusi adalah cukup berguna: karenacd mempengaruhi lingkungan eksekusi shell saat ini, selalu disediakan sebagai shell biasa built-in , tapi ada cdeksekusi untuk POSIX ini demi pula, yang mengubah direktori untuk dirinya sendiri dan kemudian segera berakhir, meninggalkan shell sekitarnya mulai dari mana
Anda dapat mencobanya dengan typebuiltin :
$ type cd
cd is a shell builtin
$ type CD
CD is /usr/bin/CD
typememberi tahu Anda apa yang shell akan lakukan ketika Anda menjalankan perintah itu. Ketika Anda menjalankan cdAnda mengakses builtin, tetapi CDmenemukan executable. Untuk builtin lain, builtin dan executable akan cukup kompatibel (coba echo), tetapi untuk cditu tidak mungkin.
alias GREPatauwhich GREPhasilkan sesuatu.