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 grep
es sich um eine echte ausführbare Datei handelt, wird sie im Dateisystem (in den Verzeichnissen von PATH
) nachgeschlagen . Wenn Ihre Shell sieht in /usr/bin
entweder grep
oder GREP
es wird die finden grep
ausfü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 cd
ist ein eingebautes Programm, auf das unter Berücksichtigung der Groß- und Kleinschreibung zugegriffen wird. Es CD
wird als ausführbare Datei gefunden /usr/bin/cd
. Die cd
ausführbare Datei ist ziemlich nutzlos: Da sie sich cd
auf die aktuelle Shell-Ausführungsumgebung auswirkt, wird sie immer als integrierte Shell bereitgestellt , es gibt jedoch trotzdem eine cd
ausfü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 type
eingebauten ausprobieren :
$ type cd
cd is a shell builtin
$ type CD
CD is /usr/bin/CD
type
Legt 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 CD
die ausführbare Datei. Für andere Builtins sind das Builtin und die ausführbare Datei einigermaßen kompatibel (try echo
), aber cd
das ist nicht möglich.
alias GREP
oderwhich GREP
Ausgang nichts.