Użyłem wget
po raz pierwszy po instalacji Lion OS X i zauważyłem, że wget został zlokalizowany na mój język ojczysty. Uruchomienie set
polecenia w terminalu pokazało, że moja LANG
zmienna reprezentuje mój lokalny język. Gdzie mogę to zmienić lub wget
zignorować to ustawienie?
aktualizacja
Oto, co locale
daje mi:
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=
Dlatego wszystkie dane wyjściowe nieparametrów (takich jak monity i komunikaty debugowania) są w języku litewskim. To jest mój problem. Chciałbym wrócić do angielskiego.
Używam zsh
jako mojej powłoki logowania.
wget
? A colocale
pokazuje i czy jest to to samo, czego oczekujesz od wyboru języka w okienku preferencji systemu Język i tekst ?Odpowiedzi:
Domyślnie Terminal ustawia regionalne zmienne środowiskowe, aby pasowały do aktualnie wybranego języka oraz formatów czasu / daty / liczb używanych przez Terminal, które są wybierane za pomocą
(Tak nazywa się Lion. W starszych systemach dokładna nazwa panelu preferencji może się różnić.)
Tymczasowym rozwiązaniem jest przeciągnięcie języka angielskiego na górę listy języków, a następnie otwarcie terminalu, a następnie przeniesienie języka litewskiego z powrotem na górę. Tylko terminal będzie w języku angielskim. Jednak po wyjściu i ponownym uruchomieniu terminalu zostanie zresetowany do litewskiego.
Trwałe podejście polega na mówieniu Terminalowi, aby nie ustawiał zmiennych środowiskowych ustawień regionalnych, poprzez wyłączenie
Wtedy ustawienia narodowe będą domyślnie ustawione na „C” bez określonego języka, a większość programów będzie wtedy domyślnie ustawiona na angielski.
Zauważ, że wyłączenie tego oznacza, że niektóre programy nie będą wiedziały, jakiego terminala używa kodowanie znaków, i przyjmą, że jest to tylko ASCII lub ISO-Latin-1. Więc jeśli Terminal używa UTF-8 (domyślnie), programy te mogą, ale nie muszą, zachowywać się zgodnie z potrzebami.
Jeśli dotyczy to w większości przypadków
wget
, zalecamy wykonanie kopii profilu ustawień domyślnych, wyłączenie ustawień regionalnych w profilu niestandardowym i korzystanie z tego profilu tylko podczas używaniawget
, aby można było nadal korzystać z UTF-8 z pełnym wsparciem podczas korzystania z innych programów, przy użyciu ustawień domyślnych.Jak wspomnieli inni, możesz również przesłonić początkowe ustawienia regionalne dostarczone przez Terminal w skrypcie uruchamiania powłoki. W przypadku zsh umieść go w ~ / .zshrc. W przypadku bash użyj ~ / .bashrc (a jeśli jeszcze go nie masz, utwórz plik ~ / .bash_profile, który działa ~ / .bashrc).
Zobacz x-man-page: // 1 / locale, aby uzyskać więcej informacji na temat każdej wartości środowiska locale.
Jednakże, jeśli miałbyś tylko
unset LANG
ustawić lub ustawić na „C”, to normalnie dotyczyłoby to wszystkich twoich powłok i programów, podczas gdy przez większość czasu prawdopodobnie chcesz używać UTF-8 i ustawić, aby Terminal ustawiał zmienne ustawień regionalnych, aby pasowały, aby uzyskać najwyższy stopień współpracy, wierności i funkcjonalności.Dlatego jeśli zamierzasz pójść tą drogą, sugeruję napisanie kodu w celu edycji, a nie zastąpienia wartości początkowych, aby zachować informacje o kodowaniu („UTF-8”) i po prostu wymusić język na angielski, zamiast ustawiać zmienne na „C”.
Na przykład działa to w Zsh i Bash:
Kiedy
LANG="lt_LT.UTF-8"
to zmieni to naLANG="en_US.UTF-8"
. Nie mamwget
możliwości przetestowania tego, ale to powinno wystarczyć.Zrobienie tego w ten sposób oznacza, że jeśli zmienisz preferencje kodowania znaków w Terminalu, nie zastąpisz tego w skrypcie uruchamiania powłoki.
źródło
LANG
polecenie redefinicji:echo ${LANG/*./en_US.}
zastępuje obecną nazwę kulturyen_US
niezależnie od tego, co to jest; pracuje wbash
,ksh
,zsh
.Jest tu ustawiony ...
Jeśli chcesz uzyskać więcej lub mniej opcji w menu rozwijanym, przejdź do karty Kodowania , aby zobaczyć jeszcze więcej nagród.
źródło
LANG=
a pozostałe wartości zostaną ustawione domyślnie na"C"
.Rozwiązałem ten problem, ustawiając język w moim pliku .profile, który ładuje się przy każdym uruchomieniu terminalu.
źródło
LC_ALL
zastępujeLANG
, więc twoje pierwsze polecenie nie przyniesie żadnego efektu.POSIX
równoważnyC
i wcale nie radzi sobie z Unicode.Opierając się bardziej na doświadczeniu Linuksa, jeśli nie chcesz całkowicie zmieniać swojej lokalizacji za pomocą LC_LANG, ale chciałbyś mieć tylko komunikaty systemowe w języku angielskim, powinieneś po prostu ustawić
źródło
LC_MESSAGES
zmienna kontrolująca, w jakim języku powinny być wyświetlane komunikaty (jeśli są zainstalowane).Korzystając z serwera Debian w języku francuskim i klienta bash dla systemu Macsox, „po prostu” musiałem dodać to do mojego pliku .bash_profile w katalogu użytkownika macosx:
Rozwiązany.
źródło
Pozostałe odpowiedzi są poprawne, czyli o
Terminal
ustawieniu na ustawić zmienne środowiskowe locale na starcie i przy użyciu Shell/etc/profile
. Jest jednak inny sposób, który warto zrozumieć - zwłaszcza jeśli problem występuje z powodu zdalnegossh
logowania.OpenSSH (stosowany w systemach Linux, BSD i macOS) może wysyłać zmienne środowiskowe ze środowiska klienta do powłoki uruchamianej przez serwer. Dzieje się tak tylko wtedy, gdy klient jest skonfigurowany do wysyłania ich, a serwer jest skonfigurowany do ich akceptowania. Klient (
~/.ssh/config
) musiałby mieć:a server (
/etc/ssh/sshd_config
) potrzebowałby:Jeśli oba są na swoim miejscu, lokalny klient jest propagowany do powłoki logowania na serwerze ssh:
Wymaganego ustawienia serwera nie ma domyślnie w systemie Snow Leopard ; jest tam w Sierra . Pamiętaj, aby zrestartować serwer SSH po modyfikacji
/etc/sshd_config
!!!źródło