他の質問から、OS Xを使用していると考えています。OSXのデフォルトのHFS +ファイルシステムは大文字と小文字を区別しません。同じディレクトリに「abc」と「ABC」という2つのファイルを配置して、どちらの名前も同じファイルになります。同じことがCygwinの下でも、大文字と小文字を区別しないファイルシステム(FAT32やciopfsなど)でも発生する可能性があります。
grep実際の実行可能ファイルであるため、ファイルシステム(のディレクトリ内PATH)で検索されます。シェルが/usr/binどちらgrepかGREPを探すか、grep実行可能ファイルを見つけます。
シェルのビルトインはファイルシステムで検索されません。ビルトインされているため、シェル自体の内部で(大文字と小文字を区別する)文字列比較を介してアクセスされます。
あなたが遭遇しているのは興味深いケースです。while 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出力します。