GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Gültige Werte für LC_CTYPE?

Ich ging nicht auf die Details ein, wer "richtig oder falsch" ist - war aber gleichermaßen verärgert über das Problem. Einige Lösungen dazu:

  • Serverseitig:
    • AcceptEnv LC_* ändern/deaktivieren in /etc/ssh/sshd
      • Nachteile:es setzt sie auf den Systemstandard
    • bearbeite .profile
      • Nachteile:Einzelnutzer
    • bearbeite /etc/bash* oder /etc/profile
      • Nachteile:können in Updates rückgängig gemacht werden
  • Clientseitig:
    • alias ssh="LC_CTYPE=\"${LANG}\" ssh" in .bashrc /.profile /whereEver
      • Nachteile:Einzelnutzer
    • dasselbe wie serverseitig in .bashrc /.profile ...
    • Einstellungen im Terminal ändern/hinzufügen
      • con:gesamte Sitzung, sei es lokal oder remote

Am Ende habe ich also mac-locale-fix.sh erstellt in /etc/profile.d auf dem Server (raspian in meinem Fall) mit dieser Zeile darin:

[ "A${LC_CTYPE}" == "AUTF-8" ] && export LC_CTYPE="${LANG}"

Hoffe das hilft anderen...


Die grundlegende Frage ist

Meine primäre Frage ist, ist dies ein Fehler in MacOS? Oder besteht Linux zu Unrecht darauf, dass die Variable auf einen vollständig spezifizierten Gebietsschemanamen gesetzt werden muss?

und die POSIX-Seite für Umgebungsvariablen zeigt den Grund, warum andere die macOS-Konfiguration als falsch ansehen:

[XSI] Wenn Der Locale-Wert hat die Form:

language[_territory][.codeset]

es bezieht sich auf ein von der Implementierung bereitgestelltes Gebietsschema, bei dem die Einstellungen für Sprache, Gebiet und Zeichensatz implementierungdefiniert sind .

LC_COLLATE , LC_CTYPE , LC_MESSAGES , LC_MONETARY , LC_NUMERIC und LC_TIME sind so definiert, dass sie einen zusätzlichen @-Feldmodifikator akzeptieren, der es dem Benutzer ermöglicht, eine bestimmte Instanz von Lokalisierungsdaten innerhalb einer einzelnen Kategorie auszuwählen (z. B. zum Auswählen des Wörterbuchs im Gegensatz zur Zeichenreihenfolge von Daten). Die Syntax für diese Umgebungsvariablen ist somit definiert als:

[language[_territory][.codeset][@modifier]]

Wenn ein Benutzer zum Beispiel auf Französisch mit dem System interagieren möchte, aber deutsche Textdateien sortieren muss, könnten LANG und LC_COLLATE wie folgt definiert werden:

LANG=Fr_FR
LC_COLLATE=De_DE

Dies könnte erweitert werden, um die Sortierung des Wörterbuchs (z. B.) durch Verwendung des @-Modifikatorfelds auszuwählen. zum Beispiel:

[email protected]

Eine Implementierung kann andere Formate unterstützen.

Wenn der Locale-Wert von der Implementierung nicht erkannt wird, ist das Verhalten nicht spezifiziert.

Das heißt, sie gehen davon aus, dass POSIX eine Syntax für die Locale-Einstellungen vorschreibt. Ein unachtsamer Leser würde annehmen, dass POSIX die zulässigen Formen für die Umgebungsvariablen so definiert, dass der codeset Der Wert ist optional und dient nicht als Ersatz für die Sprache . Aber dieses letzte „Mai“ öffnet ein Fass voller Würmer und segnet diesen Unterschied in der Interpretation. Apple kann tun, was es will, wenn es gültige Gebietsschemas bereitstellen möchte, die diesem Muster nicht genau folgen.

@tripleee schlug vor, dass die Seite zu Locale bessere Informationen liefert, aber das ist fast ausschließlich eine Diskussion der Locale-Definitionen und keine Anleitung für Interoperabilität (d. h. das angebliche Ziel von POSIX).

Keine der Seiten befasst sich mit Unterschieden in den verfügbaren Gebietsschemaeinstellungen (z. B. „.utf8“ im Vergleich zu „.UTF-8“). Diese sind implementierungsabhängig, wie auf der POSIX-Seite angegeben. Das lässt den Benutzern die einzige Lösung, selbst zu bestimmen, welche Locale-Einstellungen auf dem lokalen und entfernten System unterstützt werden, und (ssh-Verhalten hier) zu bestimmen, wie diese auf dem entfernten System "kompatibel" gesetzt werden.


Linux
  1. Wie finde ich die gültigen Werte für den Begriff, der in Tmux verwendet werden soll?

  2. Gültige Alternative zu Top für Openbsd?

  3. Wie kann man Dconf nach Schlüsseln oder Werten durchsuchen?

  4. Wie lösche ich alle Einstellungen für Deja Dup?

  5. Liste der Webskriptsprachen und Einstellungen für Plesk

Holen Sie sich Helm-Werte für eine Helm-Version

Rancher-BMC-Integration für Kubernetes-Cluster-Management

Empfohlene Anti-Spam-Einstellungen für SmarterMail 10

Empfohlene Anti-Spam-Einstellungen für SmarterMail 8

Maximalwerte für time_t (struct timepec)

Proxy-Einstellungen für Google Chrome unter Linux konfigurieren