Ich habe es wget
zum ersten Mal nach der Installation von Lion OS X verwendet und festgestellt, dass wget in meine Muttersprache lokalisiert wurde. Das Ausführen set
des Befehls im Terminal zeigte, dass meine LANG
Variable meine Landessprache darstellt. Wo kann ich dies ändern oder wget
diese Einstellung ignorieren?
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) auf Litauisch. Das ist mein Problem. Ich würde es gerne wieder auf Englisch bringen.
Ich verwende zsh
als meine Login-Shell.
Standardmäßig stellt Terminal die Gebietsschema-Umgebungsvariablen so ein, dass sie mit der aktuell ausgewählten Sprache und den Zeit-/Datums-/Zahlenformaten übereinstimmen, die Terminal verwendet und die über ausgewählt werden
Systemeinstellungen > Sprache und Text
(Das 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 Liste der Sprachen zu ziehen, dann das Terminal zu öffnen und dann Litauisch wieder an den Anfang zu verschieben. Dann ist nur Terminal auf Englisch. Es wird jedoch auf Litauisch zurückgesetzt, wenn Sie Terminal beenden und neu starten.
Ein hartnäckiger Ansatz besteht darin, Terminal anzuweisen, die lokalen Umgebungsvariablen nicht zu setzen, indem es ausgeschaltet wird
Terminal > Einstellungen > Einstellungen > [Profil] > Erweitert > Lokale Umgebungsvariablen beim Start festlegen
Dann wird das Gebietsschema standardmäßig auf "C" ohne angegebene Sprache eingestellt, und die meisten Programme werden dann standardmäßig auf Englisch eingestellt.
Beachten Sie, dass das Deaktivieren bedeutet, dass einige Programme nicht wissen, welche Zeichencodierung Terminal verwendet, und davon ausgehen, dass es sich nur um ASCII oder ISO-Latin-1 handelt. Wenn also Terminal UTF-8 (Standardeinstellung) verwendet, können sich diese Programme wie gewünscht verhalten oder auch nicht.
Wenn es hauptsächlich um wget
geht, empfehle ich Ihnen, eine Kopie des Standardeinstellungsprofils zu erstellen, die Gebietsschemaeinstellung in Ihrem benutzerdefinierten Profil zu deaktivieren und dieses Profil nur zu verwenden, wenn Sie verwenden wget
, damit Sie UTF-8 weiterhin mit voller Unterstützung verwenden können bei Verwendung anderer Programme die Standardeinstellungen verwenden.
Wie andere bereits erwähnt haben, können Sie auch die von Terminal bereitgestellten anfänglichen Gebietsschemaeinstellungen in einem Shell-Startskript überschreiben. Für zsh fügen Sie es in ~/.zshrc ein. Verwenden Sie für bash ~/.bashrc (und wenn Sie noch keines haben, erstellen Sie ein ~/.bash_profile, das ~/.bashrc ausführt).
Unter x-man-page://1/locale finden Sie weitere Informationen zu den einzelnen Locale-Umgebungswerten.
Wenn Sie es jedoch nur unset LANG
auf "C" setzen oder festlegen würden, würde dies normalerweise für alle Ihre Shells und Programme gelten, während Sie die meiste Zeit wahrscheinlich UTF-8 verwenden und Terminal die Gebietsschemavariablen so einstellen möchten, dass sie übereinstimmen. um ein Höchstmaß an Zusammenarbeit, Treue und Funktionalität zu erreichen.
Wenn Sie diesen Weg gehen, schlage ich daher vor, dass Sie Code schreiben, um die Anfangswerte zu bearbeiten, anstatt sie zu ersetzen, sodass Sie die Codierungsinformationen ("UTF-8") beibehalten und lediglich die Sprache auf Englisch zwingen. anstatt die Variablen auf "C" zu setzen.
Dies funktioniert beispielsweise in zsh und bash:
# Replace Lithuanian with English
export LANG=${LANG/lt_LT/en_US}
Wann LANG="lt_LT.UTF-8"
ändert sich dies zu LANG="en_US.UTF-8"
. Ich habe keine wget
Möglichkeit, dies zu testen, aber das sollte ausreichen.
Wenn Sie dies auf diese Weise tun, bedeutet dies, dass Sie die Einstellung für die Zeichencodierung in Terminal nicht in Ihrem Shell-Startskript überschreiben.
LANG
Um den Neudefinitionsbefehl zu verallgemeinern : echo ${LANG/*./en_US.}
Ersetzt den aktuellen Kulturnamen en_US
unabhängig davon, was er ist; arbeitet in bash
, ksh
, zsh
.Hier ist eingestellt...
Wenn Sie mehr oder weniger Optionen im Pulldown-Menü wünschen, gehen Sie zur Registerkarte „ Codierungen “, um noch mehr von der Prämie anzuzeigen.
LANG=
angezeigt, und die anderen Werte sind alle standardmäßig auf "C"
.Ich habe dieses Problem gelöst, indem ich die Sprache in meiner .profile-Datei eingestellt habe, die geladen wird, wenn ich ein Terminal starte.
export LANG="en_US.UTF-8"
export LC_ALL="POSIX"
LC_ALL
überschreibt LANG
, sodass Ihr erster Befehl keine Wirkung hat.POSIX
ist äquivalent zu C
und das kommt mit Unicode überhaupt nicht zurecht.Wenn Sie Ihre Lokalisierung nicht vollständig mit LC_LANG ändern möchten, sondern nur Systemmeldungen auf Englisch haben möchten, sollten Sie dies einfach einstellen, basierend auf Linux-Erfahrung
LC_COLLATE=C (to have standard sorting in ls, etc)
LC_CTYPE=en_US.UTF-8
LC_MESSAGES
Variable, die steuert, in welcher Sprache Meldungen ausgegeben werden sollen (falls installiert).Die anderen Antworten sind korrekt, dh über die Terminal
Einstellung für das Festlegen von Umgebungsvariablen beim Start und die Verwendung der /etc/profile
. Es gibt jedoch noch eine andere Möglichkeit, die es wert ist, verstanden zu werden - insbesondere, wenn das "Problem" aufgrund einer Remote- ssh
Anmeldung auftritt.
OpenSSH (wie es unter Linux, BSD und macOS verwendet wird) kann Umgebungsvariablen aus der Umgebung des Clients an die Shell senden, die der Server startet. Dies geschieht nur, wenn der Client so konfiguriert ist, dass er sie sendet, und der Server so konfiguriert ist, dass er sie akzeptiert. Der Client ( ~/.ssh/config
) müsste Folgendes haben:
SendEnv LANG LC_*
und der Server ( /etc/ssh/sshd_config
) würde Folgendes benötigen:
AcceptEnv LANG LC_*
Wenn beide vorhanden sind, wird das lokale des Clients in die Anmelde-Shell auf dem SSH-Server weitergegeben:
$ ssh me@my-mac locale
LANG="en_GB.UTF-8"
LC_COLLATE="en_GB.UTF-8"
LC_CTYPE="en_GB.UTF-8"
LC_MESSAGES="en_GB.UTF-8"
LC_MONETARY="en_GB.UTF-8"
LC_NUMERIC="en_GB.UTF-8"
LC_TIME="en_GB.UTF-8"
LC_ALL=
Die erforderliche Servereinstellung ist bei Snow Leopard nicht standardmäßig vorhanden ; es ist dort auf Sierra . Denken Sie daran, den SSH-Server nach der Änderung neu zu starten /etc/sshd_config
!!!
Mit einem Debian-Server auf Französisch und einem Macsox-Bash-Client musste ich dies "nur" zu meinem .bash_profile im Benutzerverzeichnis von macosx hinzufügen:
export LANG=fr_FR.UTF-8
Gelöst.
Fahrrad
wget
? Und was wirdlocale
angezeigt und ist es dasselbe, was Sie von Ihrer Sprachauswahl im Systemeinstellungsfenster Sprache & Text erwarten?