Wie ändere ich die lokale Umgebungsvariable?

Wie ändere ich die lokale Umgebungsvariable?

Ich habe erzeugtde_DE.utf8,et_EE.iso88591Undru_RU.utf8Lokalisierungsdateien. Wenn ich nun versuche, eine der Lokalisierungsvariablen in eineru_RU.utf8oderde_DE.utf8, dann hat dies keine Auswirkung:

# locale -a
C
en_US.utf8
et_EE
et_EE.iso88591
POSIX
ru_RU.utf8
# LC_TIME=ru_RU.utf8
# locale | grep LC_TIME
LC_TIME="et_EE.iso88591"
# LC_TIME="ru_RU.utf8"
# locale | grep LC_TIME
LC_TIME="et_EE.iso88591"
# 

Wenn ich jedoch dieLANG=Variable, dann alle anderen Variablen außerSPRACHE=UndLC_ALL=nehmen Sie den Wert derLANG=Variable. Gibt es eine Möglichkeit, jede Lokalvariable einzeln zu ändern? Habe ich außerdem Recht, dass Lokalvariablen keine normalen Shellvariablen sind, sondern eher Parameter fürGebietsschemaDienstprogramm?

Antwort1

Sie können jede Gebietsschemakategorie unabhängig festlegen. LANGGilt nur für die Kategorien, die nicht explizit festgelegt sind.

LANGund LC_xxxsind normale Umgebungsvariablen. Sie sind keine Einstellungen für das localeDienstprogramm: Das localeProgramm ist nicht an der Gebietsschemaverarbeitung beteiligt, es ist nur ein kleines Dienstprogramm zum Melden aktueller und verfügbarer Gebietsschemaeinstellungen.

Wenn Sie schreiben LC_TIME=ru_RU.utf8, wird keine Umgebungsvariable festgelegt, sondern nur eine Shell-Variable. Shell-Variablen sind intern in der Shell, sie werden von anderen Programmen nicht gesehen. Umgebungsvariablen hingegen werden von den Programmen geerbt, die die Shell startet. Sie müssen die Variable auch in die Umgebung exportieren:

$ LC_TIME=ru_RU.utf8
$ locale | grep LC_TIME
LC_TIME="et_EE.iso88591"
$ export LC_TIME
$ locale | grep LC_TIME
LC_TIME="ru_RU.utf8"

oder direkt

$ export LC_TIME=ru_RU.utf8
$ locale | grep LC_TIME
LC_TIME="ru_RU.utf8"

Antwort2

Ich glaube, dass Sie unter den auf Fedora/CentOS/RHEL basierenden Distributionen das Gebietsschema in eines der angezeigten Gebietsschemas ändern können, wenn Sie den locale -aBefehl in dieser Systemdatei ausführen:

/etc/sysconfig/i18n

Zum Beispiel auf meinem Fedora 14-System:

$ more /etc/sysconfig/i18n 
LANG="en_US.UTF-8"
SYSFONT="latarcyrheb-sun16"

Unter GNOME können Sie die Hilfe-App ausführen:

system-config-language

Dadurch wird diese GUI aufgerufen:

             ss von lang. gui

Ich denke, bei den Debian/Ubuntu-Distributionen ist es etwas anders. Ich glaube, es ist diese Datei:

/etc/default/locale

Ich glaube, dass es sich um Umgebungsvariablen handelt, bin mir aber nicht ganz sicher, ob und wie Anwendungen sie nutzen.

Verweise

Antwort3

Beachten Sie zumindest unter RedHat 6, dass, wenn LC_ALL festgelegt ist, das Festlegen anderer LC_*-Umgebungsvariablen keine Auswirkungen hat, da LC_ALL Vorrang vor allen anderen LC_*-Umgebungsvariablen hat.

[root@nbu76 bin]# LC_TIME=en_US.UTF-8
[root@nbu76 bin]# export LC_TIME
[root@nbu76 bin]# locale
LANG=en_US.UTF-8
LC_CTYPE="en_IE"
LC_NUMERIC="en_IE"
LC_TIME="en_IE"
...
LC_ALL=en_IE
[root@nbu76 bin]# unset LC_ALL
[root@nbu76 bin]# locale
LANG=en_US.UTF-8
LC_CTYPE=en_US.UTF-8
LC_NUMERIC="en_US.UTF-8"
LC_TIME=en_US.UTF-8
...
LC_ALL=
[root@nbu76 bin]# export LC_TIME=en_IE
[root@nbu76 bin]# locale
LANG=en_US.UTF-8
LC_CTYPE=en_US.UTF-8
LC_NUMERIC="en_US.UTF-8"
LC_TIME=en_IE
....
LC_ALL=

Antwort4

In Debian-Systemen können Sie dpkg-reconfigure localesdie Hauptsprache festlegen und andere verfügbar machen. Anschließend können Sie die Umgebungsvariable update-localefestlegen , um Ersatzsprachen zu haben.LANGUAGE/etc/default/locale

verwandte Informationen