D'après vos autres questions, vous utilisez OS X. Le système de fichiers HFS + par défaut sur OS X ne tient pas compte de la casse: vous ne pouvez pas avoir deux fichiers nommés "abc" et "ABC" dans le même répertoire et essayez d'accéder au même répertoire. l'un ou l'autre nom ira au même fichier. La même chose peut arriver sous Cygwin ou avec des systèmes de fichiers insensibles à la casse (comme FAT32 ou ciopfs ) n’importe où.
Parce que grep
est un vrai exécutable, il est recherché sur le système de fichiers (dans les répertoires de PATH
). Lorsque votre shell cherche l’ /usr/bin
un grep
ou l’ autre, GREP
il trouvera l’ grep
exécutable.
Les éléments intégrés au shell ne sont pas examinés sur le système de fichiers: comme ils sont intégrés, ils sont accessibles via des comparaisons de chaînes (sensibles à la casse) dans le shell même.
Ce que vous rencontrez est un cas intéressant. While cd
est intégré, accessible en respectant les majuscules et les minuscules, CD
en tant qu’exécutable /usr/bin/cd
. L' cd
exécutable est plutôt inutile: étant donné qu'il cd
affecte l'environnement d'exécution actuel du shell, il est toujours fourni en tant que shell standard , mais il existe néanmoins un cd
exécutable pour POSIX , qui change de répertoire pour lui-même et se termine immédiatement, laissant le shell environnant. où cela a commencé.
Vous pouvez les essayer avec le programme type
intégré :
$ type cd
cd is a shell builtin
$ type CD
CD is /usr/bin/CD
type
vous indique ce que le shell fera lorsque vous exécuterez cette commande. Lorsque vous exécutez, cd
vous accédez à la commande intégrée, mais vous trouvez CD
le fichier exécutable. Pour les autres fonctions intégrées, celles-ci et l'exécutable seront raisonnablement compatibles (essayez echo
), mais cd
cela n'est pas possible.
alias GREP
ouwhich GREP
sortez quelque chose.