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/bin
salah satu grep
atau GREP
itu akan menemukan grep
executable.
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 cd
builtin, diakses case-sensitive, CD
ditemukan sebagai executable /usr/bin/cd
. The cd
dieksekusi adalah cukup berguna: karenacd
mempengaruhi lingkungan eksekusi shell saat ini, selalu disediakan sebagai shell biasa built-in , tapi ada cd
eksekusi 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 type
builtin :
$ type cd
cd is a shell builtin
$ type CD
CD is /usr/bin/CD
type
memberi tahu Anda apa yang shell akan lakukan ketika Anda menjalankan perintah itu. Ketika Anda menjalankan cd
Anda mengakses builtin, tetapi CD
menemukan executable. Untuk builtin lain, builtin dan executable akan cukup kompatibel (coba echo
), tetapi untuk cd
itu tidak mungkin.
alias GREP
atauwhich GREP
hasilkan sesuatu.