Ist bash in OSX unabhängig von Groß- und Kleinschreibung?

79

Sind Bash-Befehle unter OSX unabhängig von Groß- und Kleinschreibung? Ich gebe "which TR" ein und es wird / usr / bin / TR angezeigt, obwohl es dort keine solche Binärdatei gibt. Dasselbe gilt für andere Binärdateien, wenn diese aktiviert sind. Oder macht Terminal.app diese Übersetzung? Wie schalte ich das aus?

verboze
quelle
Warum sollten Sie das aus Neugier abschalten?
Sören Kuklau
Das ist eine spektakuläre Frage. Bash hat eine Nocaseglob- Option, mit der gesteuert werden kann, ob Groß- und Kleinschreibung in Bereichen übereinstimmt, aber diese kleine Trickserei ist tiefer als die normale localeund vollständig ignorierte Groß- und Kleinschreibung / nocaseglob
bmike
3
Der Grund, warum ich es ausschalten wollte, ist wirklich albern. Ich bin es gewohnt, beim Arbeiten an der Shell die Groß- und Kleinschreibung zu beachten. Ich mache mir nur Sorgen, dass mich diese Funktion auslöst. Beispiel: Ich schreibe ein Bash-Skript, und tippe 'lS' ein. Das Skript läuft unter OSX einwandfrei. Ich verschiebe es in meine cenTOS-Box und es bricht. Zugegeben, dies wäre leicht zu erkennen und zu beheben, könnte aber das Szenario vollständig vermeiden, wenn ich die Skripte auf die gleiche Weise zwischen den beiden Systemen arbeiten lassen könnte. Ich habe das durch Zufall entdeckt und es war bisher kein Ärgernis, daher werde ich die Übung zum Ändern von Dateisystemen wahrscheinlich nicht genau aus diesem Grund durchgehen.
19.08.11
5
Der Grund, warum Sie dies deaktivieren möchten, ist, dass die Unterscheidung zwischen Groß- und Kleinschreibung bei einigen Apps, wie z. B. SVN, Probleme verursacht. Groß- und Kleinschreibung kann hilfreich sein, aber SVN wird sehr verwirrt, wenn Sie eine Datei mit dem Namen "Foo" erstellen und das Repository dann irgendwie einen Verweis auf "foo" erstellt.
Ein weiterer Grund für die Deaktivierung: Ich habe seit ca. 1980 ein Skript ~ / bin / CC auf meinem Weg. Cc plus einige angenehme Standardeinstellungen. Es hat von UNIX v6 bis v7 funktioniert, Eunice, BSD 4.1, 4.2, 4.3, SVr4, Xenix, Gould UTX, Linux, Cygwin ... und es schlug zum ersten Mal unter MacOS und mit unendlicher Rekursion fehl.
Krazy Glew

Antworten:

94

Dies ist eigentlich eine Funktion des Dateisystems Ihrer Festplatte, nicht Bash oder Terminal.app.

HFS + (das Mac-Dateisystem) ist normalerweise so konfiguriert, dass zwischen Groß- und Kleinschreibung nicht unterschieden wird, die Groß- und Kleinschreibung jedoch beibehalten wird . Dies bedeutet , dass das Dateisystem betrachten foound FoOgleich zu sein, aber wenn Sie eine neue Datei erstellen wird es merken , welche Buchstaben , wo aktiviert und welche nicht.

Wenn Sie eine Festplatte mit HFS + formatieren, können Sie auswählen, ob das Dateisystem zwischen Groß- und Kleinschreibung unterscheiden soll oder nicht. Wenn Sie sich für die Formatierung mit UFS (Unix FileSystem) entschieden haben, wird die Groß- und Kleinschreibung immer beachtet (AFAIK).

Führen Sie Folgendes aus, um zu überprüfen, ob bei einem Datenträger zwischen Groß- und Kleinschreibung unterschieden wird:

 diskutil info <device>

Zum Beispiel:

 diskutil info disk0s2

Suchen Sie nach der Name:Linie. Wenn es so etwas liest Mac OS Extended (Case-sensitive, Journaled), wird zwischen Groß- und Kleinschreibung unterschieden. Wenn nur Mac OS Extended(ohne Case-sensitive) gelesen wird , wird nur die Groß- / Kleinschreibung beibehalten , nicht jedoch die Groß- / Kleinschreibung .

DarkDust
quelle
6
Außerhalb von Unix ist der Fall, der die Natur bewahrt, nicht so ungewöhnlich. Beispielsweise ist NTFS ähnlich: Standardmäßig wird nicht zwischen Groß- und Kleinschreibung unterschieden, Sie können es jedoch so formatieren, wie es ist. Ich denke auch, dass die Unterscheidung zwischen Groß- und Kleinschreibung standardmäßig über Mac OS 9 erfolgt ist, aber die Tatsache, dass viele Mac- und Windows-Entwickler in dieser Hinsicht faul sind und sich nicht für die richtige Schreibweise interessieren, macht es fast unmöglich, standardmäßig zwischen Groß- und Kleinschreibung zu wechseln , bricht es viele Apps. Als ich von Unix kam, fand ich es auch am Anfang sehr seltsam.
DarkDust
1
Ich muss zugeben, dass ich Classic Mac OS noch nie verwendet habe. So oder so, das ist die Antwort und DarkDust hat es besser ausgedrückt als ich, also sollte diese akzeptiert werden, denke ich.
stuffe
6
Aus Gründen der Benutzerfreundlichkeit wurde bei jeder Version von Mac OS die Groß- und Kleinschreibung nicht berücksichtigt, jedoch beibehalten. Während UNIX die Präzision fördert (Byte-für-Byte-Vergleiche von Dateinamen), kann dies für Endbenutzer, die versehentlich "Resume" und "REsume" speichern und dann verwirrt sind, wenn sie die falsche Version öffnen und alle ihre Änderungen weg sind, zu einem Usability-Albtraum werden .
Dan Udey
2
Andererseits kann es auch ein "Usability-Albtraum" sein, wenn "HEAD" in der Befehlszeile eingegeben wird und das Programm / usr / bin / head (erste Zeilen einer Datei anzeigen) anstelle von / usr / local ausgeführt wird / bin / HEAD (von LWP: HTTP-Anforderung 'HEAD' senden).
TML
2
Zu denken, dass es für jedes Großbuchstaben-Äquivalent ein Kleinbuchstaben-Äquivalent gibt und umgekehrt, ist typisch für englischsprachige Programmierer und nicht unabhängig vom Gebietsschema. Ich weiß nicht, welche Lösung für Türkisch übernommen wurde, wo es die gepunkteten Kleinbuchstaben gibt, die den gepunkteten Großbuchstaben ientsprechen İ, während die punktlosen Großbuchstaben Iden punktlosen Kleinbuchstaben entsprechen ı, aber JEDE Lösung wird schlecht sein. Und was ist mit dem Deutschen ß, der oft mit 2 Ss groß geschrieben wird ? Und Akzente, die bei der Großschreibung oft weggelassen werden? Und ... die Groß- und Kleinschreibung beseitigt all diese Kopfschmerzen.
Walter Tross
5

Sehen Sie sich Ihr Dateisystem an, da bei HFS sowohl zwischen Groß- und Kleinschreibung unterschieden wird. Standardmäßig wird die Groß- und Kleinschreibung nicht berücksichtigt. In diesem Fall handelt es sich weniger um BASH als um das zugrunde liegende Dateisystem. Sie können dies testen, indem Sie einen freien USB-Stick mit der Option "Groß- / Kleinschreibung beachten" formatieren und Dateien kopieren, um den Test usw. zu wiederholen.

stuffe
quelle
1

Bash unterscheidet auf jeden Fall zwischen Groß- und Kleinschreibung.

Ich habe nur "whoami" in das Terminal eingegeben und die Feststelltaste war aktiviert.

Ich habe eine ganz andere Antwort von "WHOAMI" bekommen.

Ich kann sehen, dass es einen WHOAMI-Befehl mit 'which' gibt, aber ich kann ihn mit 'ls' nicht finden.

Elfen
quelle
4
Dies ist nicht die Shell, die Groß- und Kleinschreibung berücksichtigt, sondern das whoamiProgramm selbst. Es ist eigentlich das gleiche Programm wie id, aber es prüft, unter welchem ​​Namen es ausgeführt wurde, und verwendet eine andere Ausgabe (äquivalent zu id -un), wenn es unter dem Namen "whoami" ausgeführt wird. Diese Prüfung unterscheidet zwischen Groß- und Kleinschreibung. Vergleichen Sie die Ausgabe von id, WHOAMI, WhOaMi, WhoAmI, etc. Auch, vergleichen Sie die Ausgabe von ls -li /usr/bin/whoamivs ls -li /usr/bin/WHOAMIund beachten Sie, dass die Inode - Nummer (das erste , was in der Ausgabe aufgeführt) ist das gleiche - sie sind zwei verschiedene Möglichkeiten, die genau die gleiche Datei angeben .
Gordon Davisson