Es ist nicht klar, was es tut oder was es enthält. Ich habe versucht, die Ausgabe von Set und Env zu überprüfen, um zu sehen, auf was C oder LANG an anderen Stellen auf den Systemen eingestellt sind. Es war nichts klar darüber, wie es verwendet oder eingestellt wird. Ich weiß nicht einmal, welche Manpage ich überhaupt lesen soll.
Jede Hilfe hier wäre großartig, wenn ich versuche, die Startskripte auf verschiedenen Linux-Computern zu dekodieren. Wenn jemand eine gute Ressource (Bücher, Dokumentation) empfehlen kann, die bei diesem Prozess helfen würde, wäre das sehr dankbar.
Beispiel für Skripte mit LANG = C auf einem centos6-Computer
$ grep -i LANG = C ./* ./halt:LANG=C __umount_loop '$ 2 ~ / ^ \ / $ | ^ \ / proc | ^ \ / dev / {next} ./netconsole: route = $ (LANG = C ip -o route get to $ host / 32) ./netconsole: arp = $ (LANG = C / sbin / arping -c 1 -I $ DEV $ Ziel 2> / dev / null | awk '/ Antwort von. * [. *] / {print gensub (". * Antwort von. * \\ [(. *) \\]. * "," \\ 1 "," G ")} ') ./netconsole: SYSLOGADDR = $ (LANG = C Host $ SYSLOGADDR 2> / dev / null | awk '/ hat Adresse / {print $ NF}') ./network: LANG = C sed -e "$ __ sed_discard_ignored_files" \ ./Netzwerk: LANG = C sort -k 1,1 -k 2n | \. ./network: LANG = C sed 's / //') ./network: eval $ (LANG = C fgrep "DEVICE =" ifcfg- $ i) ./network: eval $ (LANG = C fgrep "TYPE =" ifcfg- $ i) ./network: eval $ (LANG = C fgrep "SLAVE =" ifcfg- $ i) ./network: wenn LANG = C egrep -L "^ ONBOOT = ['\"]? [Nn] [Oo] [' \ "]?" ifcfg- $ i> / dev / null; dann ./network: wenn! LANG = C egrep -L "^ ONBOOT = ['\"]? [Nn] [Oo] [' \ "]?" ifcfg- $ i> / dev / null 2> & 1; dann ./network: eval $ (LANG = C fgrep "DEVICE =" ifcfg- $ i) ./network: eval $ (LANG = C fgrep "TYPE =" ifcfg- $ i) ./rpcbind:# Wir können beim Booten kein Japanisch auf der normalen Konsole verwenden, also erzwinge LANG = C. ./rpcbind: LANG = C.
Beispiel für die Verwendung in Skripten auf einem Ubuntu 10.04-Computer
$ grep -i LANG = C ./* ./apache2:ENV="env -i LANG = C PATH = / usr / local / bin: / usr / bin: / bin " ./exim4:LANG=C ./ntop:export LANG = C \
LANG=C
in Ihrer.bashrc
(abhängig von Ihrer Shell) zu einem neueren Anmeldeverhalten der GUI-Konsole. Zumindest CentOS 7.6 ist kaputt. (Fragen Sie mich, woher ich das weiß)Antworten:
Es erzwingt, dass Anwendungen die Standardsprache für die Ausgabe verwenden, und erzwingt, dass die Sortierung byteweise erfolgt.
quelle
Wie bereits erläutert,
LANG
steuert die Umgebungsvariable die Lokalisierung.Es wirkt sich auf viele Standard - Kommandozeilen - Tools wie
sort
,grep
,awk
.Wenn Sie den Wert auf "C" setzen, werden alle diese Tools angewiesen, nur grundlegende ASCII-Zeichen zu berücksichtigen und die UTF-8-Multibyte-Übereinstimmung zu deaktivieren.
Ein weiterer guter Grund für die Verwendung dieser Umgebungsvariablen als die Lokalisierung ist die Leistung: Sie kann
grep
fürgrep
Versionen <2.7 1000-mal schneller sein : http://rg03.wordpress.com/2009/09/09/gnu-grep-is-slow-on- utf-8 /Informationen zum Grund, warum der Buchstabe "C" zur Angabe eines "sicheren " Basisgebietsschemas verwendet wird , finden Sie unter Warum "LANG = C". (nicht D oder E oder F) .
quelle
LANG = C ist eine Möglichkeit, die Lokalisierung zu deaktivieren. Es wird in Skripten verwendet, um die Programmausgabe vorherzusagen, die je nach aktueller Sprache variieren kann. Weitere Informationen finden Sie hier
quelle