Ich habe wget
zum ersten Mal nach der Installation von Lion OS X verwendet und festgestellt, dass wget in meine Muttersprache lokalisiert wurde. Das Ausführen des set
Befehls im Terminal hat gezeigt, dass meine LANG
Variable meine Landessprache darstellt. Wo kann ich das ändern oder wget
diese Einstellung ignorieren lassen?
aktualisieren
Folgendes locale
gibt mir:
LANG="lt_LT.UTF-8"
LC_COLLATE="lt_LT.UTF-8"
LC_CTYPE="lt_LT.UTF-8"
LC_MESSAGES="lt_LT.UTF-8"
LC_MONETARY="lt_LT.UTF-8"
LC_NUMERIC="lt_LT.UTF-8"
LC_TIME="lt_LT.UTF-8"
LC_ALL=
Daher sind alle Ausgaben von Nicht-Parametern (wie Eingabeaufforderungen und Debug-Meldungen) in Litauisch. Das ist mein problem Ich würde es gerne wieder auf Englisch bringen.
Ich benutze zsh
als meine Login-Shell.
wget
? Und was wirdlocale
angezeigt und ist es dasselbe, was Sie von Ihrer Sprachauswahl im Systemeinstellungsbereich Sprache & Text erwarten ?Antworten:
Standardmäßig legt Terminal die Umgebungsvariablen für das Gebietsschema so fest, dass sie den aktuell von Terminal verwendeten Sprach- und Zeit- / Datums- / Zahlenformaten entsprechen, die über ausgewählt werden
(Dies ist der Name auf Lion. Auf früheren Systemen kann der genaue Name des Einstellungsfensters abweichen.)
Eine vorübergehende Lösung besteht darin, Englisch an den Anfang der Sprachenliste zu ziehen, dann das Terminal zu öffnen und Litauisch an den Anfang zu verschieben. Dann wird nur Terminal in Englisch sein. Es wird jedoch auf Litauisch zurückgesetzt, wenn Sie Terminal beenden und neu starten.
Ein beständiger Ansatz besteht darin, Terminal anzuweisen, die Umgebungsvariablen für das Gebietsschema nicht festzulegen, indem Sie sie deaktivieren
Das Gebietsschema wird dann standardmäßig auf "C" ohne Angabe einer Sprache festgelegt, und die meisten Programme werden dann standardmäßig auf Englisch eingestellt.
Beachten Sie, dass das Deaktivieren dieser Option dazu führt, dass einige Programme nicht wissen, welches Zeichencodierungsterminal verwendet wird, und davon ausgehen, dass es sich nur um ASCII oder ISO-Latin-1 handelt. Wenn Terminal UTF-8 verwendet (Standardeinstellung), verhalten sich diese Programme möglicherweise nicht wie gewünscht.
In diesem
wget
Fall empfehle ich, eine Kopie des Standardeinstellungsprofils zu erstellen, die Ländereinstellung in Ihrem benutzerdefinierten Profil zu deaktivieren und dieses Profil nur bei Verwendung zu verwendenwget
, damit Sie UTF-8 weiterhin mit vollständiger Unterstützung verwenden können Wenn Sie andere Programme verwenden, verwenden Sie die Standardeinstellungen.Wie bereits erwähnt, können Sie auch die von Terminal bereitgestellten anfänglichen Gebietsschemaeinstellungen in einem Shell-Startskript überschreiben. Geben Sie für zsh ~ / .zshrc ein. Verwenden Sie für bash ~ / .bashrc (und falls Sie noch keines haben, erstellen Sie ein ~ / .bash_profile, das ~ / .bashrc ausführt).
Weitere Informationen zu den einzelnen Umgebungswerten für das Gebietsschema finden Sie unter x-man-page: // 1 / locale.
Wenn Sie es jedoch lediglich
unset LANG
auf "C" setzen oder setzen, gilt dies normalerweise für alle Ihre Shells und Programme, wohingegen Sie wahrscheinlich die meiste Zeit UTF-8 verwenden möchten und Terminal die entsprechenden Gebietsschemavariablen festlegen soll. um ein Höchstmaß an Zusammenarbeit, Treue und Funktionalität zu erreichen.Wenn Sie diesen Weg einschlagen, sollten Sie Code schreiben, um die Anfangswerte zu bearbeiten, anstatt sie zu ersetzen, damit Sie die Codierungsinformationen ("UTF-8") beibehalten und lediglich die Sprache auf Englisch setzen. anstatt die Variablen auf "C" zu setzen.
Dies funktioniert beispielsweise in zsh und bash:
Wenn
LANG="lt_LT.UTF-8"
, ändert sich dies zuLANG="en_US.UTF-8"
. Ich habe nicht zurwget
Verfügung, um dies zu testen, aber dies sollte ausreichen.Wenn Sie dies auf diese Weise tun, bedeutet dies, dass Sie die Einstellung für die Zeichencodierung in Terminal nicht überschreiben, wenn Sie sie in Ihrem Shell-Startskript ändern.
quelle
LANG
Befehl zur Neudefinition zu verallgemeinern :echo ${LANG/*./en_US.}
Ersetzt den aktuellen Kulturnamen,en_US
unabhängig davon, was er ist. arbeitetbash
,ksh
,zsh
.Es ist hier gesetzt ...
Wenn Sie mehr oder weniger Optionen im Pulldown wünschen, gehen Sie zur Registerkarte Kodierungen , um noch mehr von der Prämie zu sehen.
quelle
LANG=
angezeigt, und die anderen Werte werden standardmäßig auf "Alle" gesetzt"C"
.Ich habe dieses Problem gelöst, indem ich die Sprache in meiner .profile-Datei festgelegt habe, die beim Starten eines Terminals geladen wird.
quelle
LC_ALL
überschreibtLANG
, so dass Ihr erster Befehl keine Wirkung hat.POSIX
äquivalent zuC
und kommt mit Unicode überhaupt nicht klar.Wenn Sie Ihre Lokalisierung nicht vollständig mit LC_LANG ändern möchten, sondern nur Systemnachrichten in Englisch haben möchten, sollten Sie dies einfach festlegen
quelle
LC_MESSAGES
Variable steuert, in welcher Sprache Nachrichten ausgegeben werden sollen (falls installiert).Unter Verwendung eines Debian-Servers in Französisch und eines MacSox-Bash-Clients musste ich dies "nur" meinem .bash_profile im Benutzerverzeichnis von MacOSX hinzufügen:
Gelöst
quelle
Die anderen Antworten sind korrekt, dh sie beziehen sich auf die
Terminal
Einstellung zum Festlegen von Umgebungsvariablen für das Gebietsschema beim Start und unter Verwendung der Shell/etc/profile
. Es gibt jedoch noch einen anderen Weg, den es zu verstehen gilt - insbesondere, wenn das "Problem" durch eine Remote-ssh
Anmeldung auftritt.OpenSSH (wie es unter Linux, BSD und macOS verwendet wird) kann Umgebungsvariablen von der Client-Umgebung an die Shell senden, die der Server startet. Dies ist nur dann der Fall, wenn der Client für das Senden und der Server für das Akzeptieren konfiguriert ist. Der Client (
~/.ssh/config
) müsste:und der Server (
/etc/ssh/sshd_config
) würde brauchen:Wenn beides vorhanden ist, wird das lokale des Clients in die Anmeldeshell auf dem SSH-Server übertragen:
Die erforderliche Servereinstellung ist in Snow Leopard nicht standardmäßig vorhanden . es ist dort auf Sierra . Denken Sie daran, den SSH-Server nach dem Ändern neu zu starten
/etc/sshd_config
!!!quelle