Was Ihre anderen Fragen betrifft, so verwenden Sie OS X. Das Standard-HFS + -Dateisystem unter OS X unterscheidet nicht zwischen Groß- und Kleinschreibung: Sie können nicht zwei Dateien mit den Namen "abc" und "ABC" im selben Verzeichnis haben und versuchen, darauf zuzugreifen Jeder Name erhält die gleiche Datei. Das Gleiche kann unter Cygwin oder mit Dateisystemen ohne Berücksichtigung der Groß- / Kleinschreibung (wie FAT32 oder ciopfs ) überall passieren .
Da grepes sich um eine echte ausführbare Datei handelt, wird sie im Dateisystem (in den Verzeichnissen von PATH) nachgeschlagen . Wenn Ihre Shell sieht in /usr/binentweder grepoder GREPes wird die finden grepausführbar.
Shell-Builtins werden nicht im Dateisystem nachgeschlagen: Da sie eingebaut sind, erfolgt der Zugriff über (zwischen Groß- und Kleinschreibung unterschiedene) Zeichenfolgenvergleiche innerhalb der Shell.
Was Sie begegnen, ist ein interessanter Fall. While cdist ein eingebautes Programm, auf das unter Berücksichtigung der Groß- und Kleinschreibung zugegriffen wird. Es CDwird als ausführbare Datei gefunden /usr/bin/cd. Die cdausführbare Datei ist ziemlich nutzlos: Da sie sich cdauf die aktuelle Shell-Ausführungsumgebung auswirkt, wird sie immer als integrierte Shell bereitgestellt , es gibt jedoch trotzdem eine cdausführbare Datei für POSIX , die das Verzeichnis für sich ändert und dann sofort beendet und die umgebende Shell verlässt wo es angefangen hat.
Sie können diese mit dem typeeingebauten ausprobieren :
$ type cd
cd is a shell builtin
$ type CD
CD is /usr/bin/CD
typeLegt fest, was die Shell tut, wenn Sie diesen Befehl ausführen. Wenn Sie ausführen cd, greifen Sie auf das eingebaute Programm zu, finden jedoch CDdie ausführbare Datei. Für andere Builtins sind das Builtin und die ausführbare Datei einigermaßen kompatibel (try echo), aber cddas ist nicht möglich.
alias GREPoderwhich GREPAusgang nichts.